我有一个事件列表timestamp
。
我想要的是根据timestamp
:
添加延迟:
delay = timestamp(t+1) - timstamp(t)
我知道这不太适合setTimeout
,但是有一个解决方法,如果超时是恒定的,但在我的情况下不是。
是否可以做下一个setTimeout()
还等上一张吗?具体来说,如果第一个setTimeout()
有 5 秒延迟,第二个有 3 秒,第二个将先出现。我希望它们的顺序相同,但一个接一个地执行。
此示例适用于恒定延迟,但我想根据迭代列表所获取的信息来计算延迟。
for (i = 1; i <= 5; ++i) {
setDelay(i);
}
function setDelay(i) {
setTimeout(function(){
console.log(i);
}, 1000);
}
您可以使用IIFE(立即调用函数表达式) https://developer.mozilla.org/en-US/docs/Glossary/IIFE并用函数递归代替。像这样:
let i = 0;
(function repeat(){
if (++i > 5) return;
setTimeout(function(){
console.log("Iteration: " + i);
repeat();
}, 5000);
})();
现场小提琴here https://jsfiddle.net/ub7v9whe/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)