Из всех вопросов, которые я видел на этом сайте о setTimeout, большинство из них выполняет этот метод в объявлении setTimeout. Я этого не делаю.setTimeout Node v0.12 срабатывает сразу в цикле?
Код:
var nums = [1,2,3,4,5,6,7,8,9];
for(var i=0; i < nums.length; i++){
setTimeout(function(num){
var url = getUrl(num);
//query(url); // prints out query operation and data return
console.log(num);
}, 1000, nums[i]);
}
При выполнении команды, чтобы запустить приложение, запрос не будет выполнять все элементы в массиве независимо от того, насколько большой я установить задержку миллисекунды. При запуске этого кода при печати на консоль я получаю тот же эффект. Я делаю это неправильно? Может ли кто-нибудь еще дублировать это?
Я создал приложение, которое будет запускать setInterval для тестирования api throttling, и оно работает так, как ожидалось. Я думаю, что я могу пропустить какие-то бэкэнд-знания об узле с помощью setTimeout и циклов? setTimeout Docs
Документы говорят, что это не гарантирует времени, когда он выполнит обратный вызов, но у меня есть 120 элементов, которые он собирается запустить, и он запускает их все сразу.
Это то, что вы просите об этом: он будет оценивать все 9 вызовов через 1 секунду. – zerkms
Вы настраиваете 9 вызовов 'setTimeout()', которые все настроены для запуска через 1 секунду. – jfriend00
Ах, хорошо, что было бы более разумно, почему люди умножают индекс на сумму задержки. – Rizowski