У мене проблеми з функцією setTimeout вjavascript, моя мета полягає в тому, щоб дати час у часі для кожного вкладеного оператора, після досягнення заданого 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));
}
як ви бачите, мені потрібно дати 2 години затримки після індексу <= інтервал, а потім продовжити ще раз з останнім i.
Оцініть вашу допомогу.
Відповіді:
1 для відповіді № 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