如何在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
的信息