' Async Juggling' - 它真的要我做什么?

时间:2014-11-13 14:50:26

标签: javascript node.js algorithm asynchronous

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

然后,我进入了'Async Juggling'那个,并且就我需要做的事情而言,作业的描述完全超出了我的想法。

它的要点是,我需要编写一个接受3个URL作为参数的Javascript,但它将正确的响应与正确的服务器相关联。作业本身指出,你不能天真地认为事物将与正确的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]);

问题,以及我的问题,是处理异步连接杂耍的正确方法,以及我需要了解的基本概念是什么它正确吗?

注意:我看过其他问题,比如“OMG为什么我的解决方案不起作用?”我不是在问这个问题,我故意开始看到“天真”的解决方案对我自己失败了。我不明白为什么它不起作用的基本原则,或者实际上哪些原则起作用。另外,我不是要求某人“为我解决问题”。如果可以解释一般算法,我可以自己实现它。

1 个答案:

答案 0 :(得分:2)

  

计算回调是在Node中管理异步的基本方法之一。 [...]

这是一个重要的部分。

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

祝你好运!