【发布时间】:2018-05-26 23:29:59
【问题描述】:
所以我正在解决这个名为 Juggling Async 的 learnyounode 练习,它基本上给了我 3 个 URL,并要求我按照 URL 输入的顺序输出 URL 内容。
我想出了一个递归解决方案,其中一个回调调用另一个回调,同时维护一个退出计数器num。但是,当我运行它时,无论输入什么,我都会在控制台上不断收到空白行。
这是短代码:
var url = ["", process.argv[2], process.argv[3], process.argv[4]];
var http = require('http');
var str = ["", "", "", ""];
var cnt = 1;
function dos(num, callback)
{
if(num == 4)
return;
http.get(url[num], function (response1){
// console.log(num);
response1.setEncoding('utf8');
response1.on('data', function(data1) {
str[num] = data1;
callback(num + 1, dos);
})
});
}
dos(1, dos);
console.log(str[1]);
console.log(str[2]);
console.log(str[3]);
现在,这是我第一次使用回调函数实现递归。两天前我学习了回调函数,这可能意味着这里有一些我看不到的明显错误。请帮我看看。谢谢。
【问题讨论】:
-
您是否尝试过记录
data1以首先查看返回的内容是什么? -
我没有。我现在尝试在
response1.on('data'块内记录 data1 。有内容,但它会被记录多次。这可能意味着递归有问题,或者事件被多次发出?
标签: javascript node.js asynchronous callback