Javascript For循环回调?

时间:2011-04-09 02:03:50

标签: javascript

试着用Javascript而不是jQuery思考,所以我想知道我是否正确行事。

我想在循环结束时进行回调。这是正确的方法吗?

for(var i = 0; i < divs.length; i++) {

  /* do some stuff */ 

  if ( i === (divs.length - 1)) {  /* call back */  }

}

我应该补充说,我并不是说JSON请求回调就像循环结束时那样。

4 个答案:

答案 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调用的情况下,可能还有其他事情需要考虑。