为什么我的异步回调函数没有按顺序返回数据请求?

时间:2015-06-22 11:42:16

标签: javascript node.js

我正在学习Node.js并且正在从Node学校学习Learnyounode课程,虽然这是一个非常挑战,但我有点困惑......

我坚持的问题是练习9-杂耍异步......

我正在努力解决问题:

“您必须收集每个URL提供给您的完整内容并将其打印到控制台(stdout)。您不需要打印长度,只需将数据打印为字符串;每个URL一行问题在于你必须按照与作为命令行参数提供给你的URL相同的顺序打印它们。“

我已经尝试在一个名为'waiting'的变量中计算回调,然后在计算了3个回调时调用height函数,但数据仍然总是以错误的顺序返回而我不是知道为什么....

complete()

3 个答案:

答案 0 :(得分:1)

不保证异步回调按HTTP请求的顺序发生。

您可以通过更改以下内容来维护订单:

output.push(data.toString());

为:

output[i] = data.toString();

答案 1 :(得分:1)

这是因为你的http get请求是异步的。

而不是推送到输出数组执行此操作

output[i]=data.toString();

答案 2 :(得分:0)

通过关闭或将其作为属性添加到请求中,为每个请求保存“i”索引的值。然后,您可以使用该索引来订购回复。