如何在代码中实现顺序流

时间:2013-04-09 10:52:27

标签: node.js mongoose

有没有办法在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);

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

1 个答案:

答案 0 :(得分: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);
})

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