111
发布于 2年前 作者 yandaoyong 967 次浏览

111

7 回复

简单点用async模块的foreach。 给你闭包里的函数加一个callback,一起传进去。

或者循环改递归

外面做个变量标记,在闭包中判断一下确定所有的循环都执行完了,然后再执行next函数.

个人觉得:js的for循环里面,如果需要非异步,不要把function放在循环中,而改用callback。

var flag = 0;
var array = [{},{},{},{}];
for(var i = 0; i < array.length; i++){
    //do something as async
    dao.create(array[i],function(err,doc){
        if(array.length == ++flag){
            //do something at last
        }
    });
}

有两种解决方式,一种是用undersorce.js _.each或者其他的foreach函数,还有一种是用do(需传递的变量)…while语法要多了解javascript的特性及处理方式我相信你以后遇到类似的问题应该能轻松解决.

回到顶部