我正在使用 learnyounode
学习 node.js。
在 JUGGLING ASYNC
中遇到了问题。
问题如下:
你会从命令行参数中得到三个 URL 地址,需要使用 http.get()
调用获取这些地址的数据,并按照它们在参数列表中的顺序打印出来。
以下是我的代码:
var http = require('http')
var truecount = 0;
var printlist = []
for(var i = 2; i < process.argv.length; i++) {
http.get(process.argv[i], function(response) {
var printdata = "";
response.setEncoding('utf8');
response.on('data', function(data) {
printdata += data;
})
response.on('end', function() {
truecount += 1
printlist.push(printdata)
if(truecount == 3) {
printlist.forEach(function(item) {
console.log(item)
})
}
})
})
}
这是我不明白的问题:我试图使用字典存储使用
response.on('end', function(){})
为每个url完成的数据。然而,我不知道如何获取那个http.get()
的url。如果我可以在http.get()
内部做一个局部变量,那就太好了,但我认为无论何时声明一个变量为var url
,它都将始终指向最后一个url。由于它是全局的并且通过循环不断更新。对于我存储这些已完成数据作为键等于url的值的最佳方法是什么?