2014-09-03 101 views
1

正在執行mongo數據庫查找,打算將結果保存在作用域變量中。回調中的Javascript變量範圍?

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? 

謝謝!

+0

大聲笑..重新回到功能回調問題!哈哈.. @elclanrs真的..這是每天重複。 – 2014-09-03 05:50:19

回答

1

你無法預測回調函數何時執行..這就是爲什麼用戶的數組沒有正確更新..當回調觸發數組將更新自己,但直到它,數組將會是相同的。回調函數只會在find事件完成時執行,但這並不意味着它會阻止代碼的其餘部分執行。回調異步觸發。希望有所幫助!至少提示正確的方向:)

處理回調中的成功邏輯(console.log)..

+0

哇!謝謝你!我認爲這與當地的一些範圍界定問題有關。 – kaid 2014-09-03 05:58:51

+0

不用擔心!快樂編碼:) – 2014-09-03 06:02:44