我有一个存储有多个延迟的数组:myArray [8000,4000,3000,6000,5000].我需要setTimeout / setInterval来运行每个延迟,然后执行一段特定的代码.因此,例如:
myArray[0]=8000;
myArray[1]=4000;
myArray[2]=3000;
myArray[3]=6000;
myArray[4]=5000;
for(var k=0;k<5;k++)
{
setTimeout(function() {
console.log("CODE TO BE EXECUTED");
}, diffArray[k]);
}
因此,最终结果将是等待12秒运行代码,等待4秒运行代码,等待3秒运行代码,等待6秒运行代码以及等待5秒并运行代码.当前代码同时运行它们.
我知道这很可能需要递归来完成,我已经尝试了一些方法使其正常工作,但是没有运气.我让它以一种方式工作,但是很遗憾,它锁定了UI线程,在运行时我需要在UI中执行其他操作.任何帮助,将不胜感激!
解决方法:
依次运行setTimeout.您正在同时运行所有setTimeout.
myArray[0]=8000;
myArray[1]=4000;
myArray[2]=3000;
myArray[3]=6000;
myArray[4]=5000;
var k =0;
function repeat(){
if(k == myArray.length) return;
setTimeout(function() {
repeat();
console.log("CODE TO BE EXECUTED");
}, myArray[k]);
k++;
}