【发布时间】:2012-01-19 10:04:57
【问题描述】:
我有以下 NODE.JS 代码:
var a = [1,2,3,4,5,6]
function test(){
var v = a.pop()
if (!v) return
function uno(){
due(v, function(){
console.log(v)
})
console.log("Start:",v)
return test()
}
function due(v, cb){
setTimeout(function(){
console.log(v);
cb();
}, 5000);
}
uno();
}
test()
这是输出:
Start: 6
Start: 5
Start: 4
Start: 3
Start: 2
Start: 1
6
6
5
5
4
4
3
3
2
2
1
1
正如您在 uno() 函数中看到的那样,我调用 due() 函数时超时。
我有两个:console.log(v)(在uno() 和due() 内)
有人能解释一下为什么当我调用回调 (cb()) 时 v 值是相同的吗?
在做:
due(v, function(){
console.log(v)
})
console.log 会保留我在 due() 调用中传递的 v 值吗?
为什么它没有在 test() 函数上获得“全局”v 值?
【问题讨论】:
标签: node.js