我在javascript中使用setTimeout函数时遇到问题,我的目的是为每个插入语句指定超时,在达到给定的最大记录后,它将暂停2小时,然后继续插入语句。
现在我只为第一个条件做工作,每个条件都会有延迟。但我不知道如何在继续插入之前给出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 setTimeout 给出另一个超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38816348/