0

有没有办法在 node.js 中按顺序运行代码,我正在尝试运行下面的代码,但我没有按预期工作

for(var i =0; i < userList.length; i++) {
console.log("============userList========="+userList[i]);

    Db.findOne({"_id" : Number(userList[i])}, { "flag" : 1 }, function(err, result) {
    if(result && (result.get("flag.notify") === true)) {
        console.log("========my condition========="+result);
    }
    });
}

console.log("===reached here===");
callback(null, MyResult);

我希望上面的代码迭代并检查数据库中的条件,但这不会发生在这里。有什么线索吗?

4

1 回答 1

0

有一个非常好的 node.js 库“async”用于管理异步环境中的控制流。对于这个特定的问题使用https://github.com/caolan/async#forEach系列版本可以帮助您解决这个问题

async.forEachSeries(userList,function(user,cb){
console.log("============userList========="+user);

Db.findOne({"_id" : Number(user)}, { "flag" : 1 }, function(err, result) {
if(result && (result.get("flag.notify") === true)) {
    console.log("========my condition========="+result);
}
cb();
});
},function(err){
console.log("===reached here===");
callback(null, MyResult);
})

可能存在一些语法问题,但它向您展示了解决问题的一些方向。

于 2013-04-10T11:29:28.340 回答