#jquery #loops #timer #delay
#jquery #циклы #таймер #задержка
Вопрос:
У меня есть цикл с в цикле, подобном этому
$.each(requiredCities,function(keya,valb){
$.each(requiredKeyWords,function(keya,valb){
download(keya,valb);
});
});
Я хочу, чтобы эта функция загрузки вызывалась каждые 2 секунды.
Проблема в том, что я не могу использовать setTimeout.
Комментарии:
1. Автор намекнул, что он не хотел использовать setInterval в коде, но принял ответ, который делает именно это. Ясно, что проблема была неправильно сформулирована.
2. большое вам спасибо, но если я могу повторить то, что я сказал, «Отсутствие setInterval также не помогает».
3. Удалено значение -1, поскольку вы его уточнили. Но я предлагаю это прочитать: meta.stackexchange.com/questions/18584 /… .
Ответ №1:
Сделайте это:
var i=1;
$.each(requiredCities,function(keya,valb){
$.each(requiredKeyWords,function(keya,valb){
var timerId = setInterval(function(){
download(keya,valb);
clearInterval(timerId);
}, 2000*(i ));
});
});
Приветствия
Ответ №2:
Используйте delay
метод из jQuery API, если вы хотите подождать некоторое время перед следующим вызовом.
Используйте everyTime
метод из плагина jQuery Timer, если вы хотите, чтобы ваш код снова выполнялся непрерывно через некоторое время (я думаю, что это ваш случай, основанный на вашем комментарии).
Комментарии:
1. Но это говорит о том, что . метод delay () лучше всего подходит для задержки между эффектами jQuery в очереди, так как же мне использовать delay в этом случае
Ответ №3:
Я обнаружил, что создание простой функции и вызов вашего кода через функцию через setInterval вместо setTimeout. На самом деле это просто зависит от того, что вы пытаетесь сделать.
возможно, это сработало бы лучше:
setInterval("fooBar()", 1000);
function fooBar(){
$.each(requiredCities,function(keya,valb){
$.each(requiredKeyWords,function(keya,valb){
download(keya,valb);
});
});
}
не уверен, что это сработает, но при первом запуске, я думаю, все было бы в порядке