我在javascript中遇到了setTimeout函数的问题,我的目的是为每个insert语句赋予超时,在达到maxrecord后,它会暂停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));
}
如你所见,我需要在索引&lt; =间隔后给出2小时的延迟,然后再用最后一个i继续。
感谢您的帮助。
答案 0 :(得分:1)
您可以在开始时使用预定义的持续时间立即设置所有超时。
您不能(轻松)继续修改基于任意条件设置这些时间的方式(您说的这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