111
111
6 回复
谢谢
或者循环改递归
外面做个变量标记,在闭包中判断一下确定所有的循环都执行完了,然后再执行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的特性及处理方式我相信你以后遇到类似的问题应该能轻松解决.