我无法适应 Node 的单线程 + 异步特性以及 javascript 的函数闭包。
假设我有类似的东西:
function foo(bar) {
someAsyncFunction(function callback(err) {
// do stuff with 'bar'
});
}
如果我遗漏了什么,请告诉我;但我的理解是:
- 由于关闭,
callback
会有参考bar
但是,如果
foo
用bar
= 20 调用一次,然后再 从第一次调用调用bar = 42
before ,那么第一次调用的结果将是 42 。换句话说:callback
bar
callback
foo
foo(20)
#1someAsyncFunction(function callback() {})
#1foo(42)
#2someAsyncFunction(function callback() {})
#2callback()
#1 -------> 使用bar
=42callback()
#2 -------> 使用bar
=42
我对此是否正确?(bar
是原始的还是对象有关系吗?)。如果是这样,我该怎么做才能确保callback
使用正确的值(除了一直向下和向上bar
传递调用堆栈)?bar
感谢您的任何帮助。