Javascript For循环回调?

wes*_*bos 18 javascript

试着用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)


ham*_*hik 8

只是为了使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调用的情况下,可能还有其他事情需要考虑.