CNode

nodejs 异步调用传参问题?

Sskytouchzyt发布于12 年前最后回复12 年前4 回复6152 浏览0 收藏

使用mongodb,本意是查询一些数据,然后逐个进行更新操作 for(var i=0;i<arr.length;i++) { db.update(...,function(err,result) { console.log(i); ...... }); } 发现在update中i一直等于length,更新总是失败.研究半天,原来update是异步的,等到 update执行时,for早就执行完毕. 后来把代码改成下面这样 for(var i=0;i<arr.length;i++){ (function(index){ db.update(...,function(err,result) { console.log(index); ...... }); })(i); } 加个匿名函数自执行体就OK

虽然解决问题了,总感觉这么写代码别扭.

查看回复

回复 (3)

Y
yorkie#1·12 年前

async

B
bsspirit#2·12 年前

还是用async,代码容易控制 http://blog.fens.me/nodejs-async/

N
nighca#3·12 年前
arr.forEach(function(item, i){ 
    db.update(..., function(err, result){
       console.log(i);
       ......
    });
});
参与回复
登录后即可参与回复。登录