回调中的Javascript变量范围?

时间:2014-09-03 05:46:12

标签: javascript mongodb callback scope

进行mongo数据库查找,打算将结果保存在范围变量中。

var users = ['kat'];

collection.find({key: key}, function(err, doc) {
    if (doc) {
        var firstEntry = doc[0];
        users = firstEntry.users;
        users.push('jack');
    } else {
        console.log("DB ERROR: cannot find: " + key);
    } 
});

console.log(users); // Why does this return only Kat, and Jack is not appended? 

谢谢!

1 个答案:

答案 0 :(得分:1)

你无法预测何时将执行回调函数..这就是为什么用户的数组没有正确更新的原因..当回调触发时,数组会自行更新,但直到它完成,数组会是一样的。回调函数仅在find事件完成时执行,但这并不意味着它将阻止执行其余代码。异步回调引发。希望有所帮助!至少暗示正确的方向:)

处理回调中的成功逻辑(console.log)..