【发布时间】:2015-12-26 00:22:04
【问题描述】:
在我的 Node.js 代码中,我需要进行 2 或 3 个 API 调用,每个调用都会返回一些数据。在所有 API 调用完成后,我想将所有数据收集到一个 JSON 对象中发送到前端。
我知道如何使用 API 回调来执行此操作(下一次调用将在上一次调用的回调中发生)但这会很慢:
//1st request
request('http://www.example.com', function (err1, res1, body) {
//2nd request
request('http://www.example2.com', function (err2, res2, body2) {
//combine data and do something with it
});
});
我知道你也可以用 Promise 做一些类似的、更简洁的事情,但我认为同样的概念适用于下一个调用在当前调用完成之前不会执行的情况。
有没有办法同时调用所有函数,但我的最后一个代码块要等待所有 API 调用完成并在执行之前提供数据?
【问题讨论】:
-
这是基于回调的异步函数的限制。只是没有一种超级干净的方法来做到这一点。不过,这对 Promise 来说是微不足道的。
-
不是重复的,而是密切相关的:How can I fetch an array of URLs with Promise.all?.
标签: javascript node.js asynchronous