试着用Javascript而不是jQuery思考,所以我想知道我是否正确行事。
我想在循环结束时进行回调。这是正确的方法吗?
for(var i = 0; i < divs.length; i++) {
/* do some stuff */
if ( i === (divs.length - 1)) { /* call back */ }
}
我应该补充说,我并不是说JSON请求回调就像循环结束时那样。
答案 0 :(得分:23)
为清楚起见,您应该使用@ mu的答案,但如果您确实必须在for
构造中包含回调,则可以使用逗号运算符*:
for(var i = 0;
i < divs.length || function(){ /* call back */ }(), false;
i++) {
/* do some stuff */
}
*正如this fascinating article中所述。
答案 1 :(得分:20)
为什么不说出你的意思,并在循环之后调用回调?
function thing_with_callback(divs, callback) {
for(var i = 0; i < divs.length; i++) {
/* do some stuff */
}
callback();
}
答案 2 :(得分:8)
只是为了使codelahoma的答案更简单,你可以直接从你的回调函数返回false。 (以避免再次重新执行循环代码)
for(var i = 0;i < divs.length || function(){ /* callback */ return false;}();i++){
/* loop code */
}
答案 3 :(得分:5)
在我看来,问题是关于javascript代码的执行顺序。答案是:
是的,您可以将回调放在外面,因为javascript代码逐行执行。在异步的ajax调用的情况下,可能还有其他事情需要考虑。