Javascript setTimeout给出了另一个超时

时间:2016-08-07 16:44:54

标签: javascript jquery

我在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继续。

感谢您的帮助。

1 个答案:

答案 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