Большую часть времени я использую итерации функции вместо петель bulidtin. Они доступны в новых браузерах, и большинство библиотек JS:
array.forEach(function(item, i){
//We can freely use "item" and "i" in callbacks without worrying
setTimeout(function(){ console.log(item, i) }, 1000);
});
Это он, как правило, короче для-петли версии (если вы итерацию над массивом, по крайней мере), и это позволяет избежать замыкания-в-для- loops bug для «free», без необходимости добавлять лишние вызовы или подобные вещи.
Главным недостатком этого метода является то, что он не поддерживает использование этого «и», используя операторы break, continue и return, а также встроенные петли и что большинство библиотек имеют только функции для итерации массива или словаря, без поддержки более общих стилей цикла. Хотя я редко нуждаюсь в такой расширенной функциональности, когда она появляется, я обычно использую дополнительные блокировки (как и вы), или, если это общий шаблон, пишите мои собственные функции итератора.
var forLoop = function(i0, n, f){
for(var i=i0; i<n; i++){
f(i);
}
};
forLoop(1, 496, function(i){
myApp.getTerm(i, function(term, def){
myApp.quizlet[0].terms[i] = { ... }
});
});
Нет такой вещи, как глупый вопрос здесь (пока это хорошо спрошено, по крайней мере) – hugomg
Спасибо Missingno .. :) – JackSMTV