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