我無法適應Node的單線程+異步特性,再加上javascript的函數閉包。Node.js:異步代碼+ js關閉的問題
假設我有這樣的:
function foo(bar) {
someAsyncFunction(function callback(err) {
// do stuff with 'bar'
});
}
請讓我知道如果我失去了一些東西;但我的理解是:
- 由於封閉,
callback
將bar = 42
有參考到bar
然而,如果
foo
與bar
= 20調用一次,然後再次callback
前從的第一次呼叫產生的中bar
將是42。其他在 詞:foo(20)
#1someAsyncFunction(function callback() {})
#1foo(42)
#2someAsyncFunction(function callback() {})
#2callback()
#1 ------->使用bar
= 42callback()
#2 ------->使用bar
= 42
我正確嗎? (bar
是原始對象還是對象?)。如果是這樣,我可以做些什麼來確保callback
使用正確的值bar
(ASIDE從bar
一路向下&上調用堆棧)?感謝您的任何幫助。
'每次調用foo都會創建一個新欄' - 這讓我很困擾。事實上,你發佈的例子正是我所想的。謝謝您的回覆! – Colin