Javascript Для обратного вызова цикла?
Попытка думать в Javascript, а не в jQuery, так что мне интересно, правильно ли я это делаю.
Я хочу иметь обратный вызов, когда мой цикл закончен. Правильно ли это?
for(var i = 0; i < divs.length; i++) {
/* do some stuff */
if ( i === (divs.length - 1)) { /* call back */ }
}
Я должен добавить, что я не имею в виду что-то вроде обратного вызова запроса JSON, только когда цикл закончен.
Ответы
Ответ 1
Почему бы не сказать то, что вы действительно имеете в виду, и вызвать обратный вызов после цикла?
function thing_with_callback(divs, callback) {
for(var i = 0; i < divs.length; i++) {
/* do some stuff */
}
callback();
}
Ответ 2
Для ясности вы должны пойти с ответом @mu, но если вы действительно должны включить обратный вызов в конструкцию for
, вы можете использовать оператор запятой *:
for(var i = 0;
i < divs.length || function(){ /* call back */ }(), false;
i++) {
/* do some stuff */
}
* Как объясняется в этой увлекательной статье.
Ответ 3
Просто, чтобы заставить codelahoma проще ответить, вы можете прямо вернуть false из своей функции обратного вызова. (чтобы избежать повторного выполнения кода цикла еще раз)
for(var i = 0;i < divs.length || function(){ /* callback */ return false;}();i++){
/* loop code */
}
Ответ 4
Мне кажется, речь идет о порядке выполнения javascript-кода. И ответы:
Да, вы можете поместить обратный вызов вне, потому что код javascript выполняется по строкам. В случае асинхронных вызовов ajax могут быть другие вещи, которые следует учитывать.