我在学习node.js与learnyounode
。 我遇到问题JUGGLING ASYNC
。 问题描述如下:
给出三个URL作为命令行参数。您应该调用http.get()
调用以从这些url中获取数据,然后按照与参数列表中的顺序相同的顺序打印它们。 这里是我的代码:处理多个调用异步回调
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()
的网址。如果我可以在http.get()
内部做一个局部变量,那会很好,但我认为每当我声明一个变量为var url
时,它总是会指向最后一个url。由于它是全球性的,它通过循环不断更新。对于我来说,将这些已完成的数据存储为键值与键值相等的最佳方式是什么?