我在javascript中使用setTimeout函数遇到麻烦,我的目的是给每个insert语句超时,达到给定的maxrecord后,它将暂停2小时,然后继续执行insert语句。
现在,我只为第一个条件工作,每个插入都被延迟。但是我不知道如何在继续插入之前给2小时的延迟。
我的代码是这样的
var ids = $("#listId").val().split('\n');
var index = 1;
for(var i = 0; i < ids.length; i++) {
(function(i){
setTimeout(function(){
if (index <= interval) {
console.log("INDEX : " + index + " INTERVAL : " + interval);
} else {
console.log("SHOULD BREAK FOR 2 HOURS (NOTHING TODO HERE, JUST DELAY) THEN CONTINUE FROM LAST IDS");
}
index++;
}, 1000 * i);
}(i));
}
如您所见,我需要在索引<=间隔后给出2个小时的延迟,然后从最后一个i继续。
感谢您的帮助。
最佳答案
您将在开始时以预定义的持续时间一次设置所有超时。
您无法(轻松)继续根据任意条件修改这些时间的设置方式(您所说的这2个小时的延迟)
相反,您应该执行以下操作:
function nextRow() {
// handle a single row
i++;
if( i < ids.length) setTimeout(nextRow,delay);
// where delay is either 1000 or 7200000 as needed
}
nextRow(); // start the loop
关于javascript - JavaScript setTimeout给出另一个超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38816348/