node.js异步;数回调



如何在node.js中计算回调函数的实例?

我正在做learnyounode的第9个练习(在官方解决方案下面)。据我所知,httpGet函数被调用了三次,在整个过程中运行。Argv[2],[3],[4]。但是怎么能数到=== 3呢?单独的函数不就等于1吗?一个调用httpGet如何知道其他的?

var http = require('http')
var bl = require('bl')
var results = []
var count = 0
function printResults () {
for (var i = 0; i < 3; i++)
console.log(results[i])
}
function httpGet (index) {
http.get(process.argv[2 + index], function (response) {
response.pipe(bl(function (err, data) {
if (err)
return console.error(err)
results[index] = data.toString()
count++
if (count == 3)
printResults()
}))
})
}
for (var i = 0; i < 3; i++)
httpGet(i)

但如何计数=== 3呢?

count是在httpGet之外定义的,因此它的值与那些函数调用无关。count++count = count + 1相同,即每次调用httpGet都会使count的值增加1。第三次调用该函数时,count的值将变为3

我们可以很容易地复制这个:

var count = 0;
function httpGet() {
count++;
console.log('count: ', count);
if (count === 3) {
console.log('count is 3');
}
}
httpGet();
httpGet();
httpGet();

首先,建议不要使用var

var是在全局作用域中定义的,所以它的值在调用之间更新

点击这里阅读更多关于var的信息

最新更新