循环回调的Javascript?

循环回调的Javascript?,javascript,Javascript,尝试用Javascript而不是jQuery思考,所以我想知道我是否做得对 我想在循环完成后进行回调。这是正确的方法吗 for(var i = 0; i < divs.length; i++) { /* do some stuff */ if ( i === (divs.length - 1)) { /* call back */ } } for(变量i=0;i

尝试用Javascript而不是jQuery思考,所以我想知道我是否做得对

我想在循环完成后进行回调。这是正确的方法吗

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

  /* do some stuff */ 

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

}
for(变量i=0;i

我应该补充一点,我指的不是像JSON请求回调这样的东西,只是在循环完成时

为什么不说出你真正的意思,在循环之后调用回调

function thing_with_callback(divs, callback) {
    for(var i = 0; i < divs.length; i++) {
        /* do some stuff */ 
    }
    callback();
}
function thing_与_回调(divs,callback){
对于(变量i=0;i
为了清楚起见,您应该使用@mu的答案,但如果您确实必须在
For
构造中包含回调,则可以使用逗号运算符*:

for(var i = 0;
    i < divs.length || function(){ /* call back */ }(), false;
    i++) {

/* do some stuff */ 

}
for(var i=0;
i

*如中所述

在我看来,问题在于javascript代码的执行顺序。答案是:


是的,您可以将回调放在外部,因为javascript代码是逐行执行的。在Ajax调用的情况下,可能还有其他的事情要考虑。

原谅我的无知,但我不理解。如果您想在循环完成时调用它,为什么不在循环之后而不是在循环内部调用呢?如果您想用JavaScript思考,那么就这样做。执行循环,然后调用函数。@Aleadam,因为循环可能包含一些异步活动。例如,您可能正在向数据库中添加某些内容。无论如何,这是我的挑战…因为那太不可思议了。另外,如果您想在调试器中以交互方式编辑i,该怎么办?从技术上讲,如果数组为空,这是不等价的,因为它仍然会运行。不过,通过添加if语句来解决这个问题很容易。@Matthew:问题是“我想在循环完成时进行回调。”因此,将
callback()在循环之外是唯一的方法,并且不需要对divs.length设置条件。是的,这可能是他想要做的,但是如果divs.length为零,问题中的示例不会调用回调,因为for循环永远不会运行。你说得对,把回调放在循环之后几乎肯定是他想要的。@Matthew:是的,有一些含糊不清的地方,所以它可以走任何一条路。很难说当
divs.length==0时会发生什么。