Javascript ';异步杂耍';-它到底要我做什么?

Javascript ';异步杂耍';-它到底要我做什么?,javascript,node.js,algorithm,asynchronous,Javascript,Node.js,Algorithm,Asynchronous,我正在通过learnyounode项目学习Node.js。我已经完成了最初的几项任务,它们看起来都相当简单 然后,我进入了“异步杂耍”阶段,任务的描述完全超出了我的理解范围,无法理解我需要做什么 要点是,我需要编写一个Javascript,它接受3个URL作为参数,但将正确的响应与正确的服务器相关联。分配本身指出,您不能天真地假设事物将与正确的URL正确关联 我提出的(不正确的)代码证明了这一限制是正确的: var http = require('http'); var bl = require

我正在通过
learnyounode
项目学习Node.js。我已经完成了最初的几项任务,它们看起来都相当简单

然后,我进入了“异步杂耍”阶段,任务的描述完全超出了我的理解范围,无法理解我需要做什么

要点是,我需要编写一个Javascript,它接受3个URL作为参数,但将正确的响应与正确的服务器相关联。分配本身指出,您不能天真地假设事物将与正确的URL正确关联

我提出的(不正确的)代码证明了这一限制是正确的:

var http = require('http');
var bl = require('bl');

var httpCallback = function(response) {
    var pipeHandler = function (err, data) {
        if(err)
            return console.error(err);

        console.log(data.toString());
    };  

    response.pipe(bl(pipeHandler));
};

var juggleAsyncConnections = function(connA, connB, connC) {
    http.get(connA, httpCallback);
    http.get(connB, httpCallback);
    http.get(connC, httpCallback);
};

juggleAsyncConnections(process.argv[2], process.argv[3], process.argv[4]);
问题是,处理异步连接杂耍的正确方法是什么,我需要理解哪些基本概念才能正确处理

注意:我看到过其他问题,比如“天哪,为什么我的解决方案不起作用?”我不是在问这个问题,我故意让自己看到“天真”的解决方案失败了。我不理解为什么它不起作用的基本原则,或者什么原则真正起作用。此外,我并不是要求别人“为我解决问题”。如果可以解释一般算法,我可能可以自己实现它

计数回调是在节点中管理异步的基本方法之一。[……]

这是一个重要的部分

你知道有多少输入(3),因此,你知道应该有多少输出。在回复返回时保持连续记录,然后在打印到屏幕之前检查是否收到完整的数据集。您还需要记住原始顺序(现在如果只有一个数据类型具有数字索引…:grin:)


祝你好运

“计算回调是在节点中管理异步的基本方法之一。”这是谜题的一个重要部分。是的,我不知道如何以可用的方式解释它。如果它如此重要,这意味着什么?记录下你收到的回电数量。你知道你在看一个固定数量的输入,所以在打印到屏幕上之前要看那么多的输出。这样说,对我来说更有意义。你介意回答一下吗?