我正在通过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为什么我的解决方案不起作用?”我不是在问这个问题,我故意开始看到“天真”的解决方案对我自己失败了。我不明白为什么它不起作用的基本原则,或者实际上哪些原则起作用。另外,我不是要求某人“为我解决问题”。如果可以解释一般算法,我可以自己实现它。
答案 0 :(得分:2)
计算回调是在Node中管理异步的基本方法之一。 [...]
这是一个重要的部分。
你知道有多少输入(3),因此,你知道应该有多少输出。响应返回时保持运行计数,然后在打印到屏幕之前检查是否收到完整集。您还需要记住原始顺序(现在,如果只有数据类型具有数字索引......:grin :)。
祝你好运!