如何在 Node JS 中使用动态 URL 发出一系列并行(异步)API 请求



如何在 Node JS 中异步调用 HTTP 请求。我有以下3个主要挑战。

  • 需要异步调用。
  • 请求 URL 是动态的。
  • 避免使用循环。

以下方法用于调用单个终结点。

const options = {
method: 'POST',
uri: "http://api.example.com"
}

常量响应 = 等待请求(选项(;

请求承诺 NPM


为了异步调用,我使用了 parallel-http-request,如下所示。

request.add({
url:'https://jsonplaceholder.typicode.com/posts/1', 
method:'post',
})
.add({
url:'https://jsonplaceholder.typicode.com/posts/2', 
method:'post'
})
.add({
url:'https://jsonplaceholder.typicode.com/posts/3', 
method:'post'
});

上述两种方法都支持无法动态处理的静态数量的 API 请求。

例如,当使用并行 http-request 时,需要在 JS 代码中添加.add({关键字,这将不支持动态 URL 参数。

还有其他方法可以完成这项任务吗?提前谢谢。

使用Promise.all并将所有请求承诺包装在一个数组中。

await Promise.all([
request({
url:'https://jsonplaceholder.typicode.com/posts/1', 
method:'post',
}),
request({
url:'https://jsonplaceholder.typicode.com/posts/2', 
method:'post'
}),
request({
url:'https://jsonplaceholder.typicode.com/posts/3', 
method:'post'
})
]);

此外,由于承诺被拒绝的可能性。 包装try-catch是必须的。

try {
await Promise.all([
request({
url:'https://jsonplaceholder.typicode.com/posts/1', 
method:'post',
}),
request({
url:'https://jsonplaceholder.typicode.com/posts/2', 
method:'post'
}),
request({
url:'https://jsonplaceholder.typicode.com/posts/3', 
method:'post'
})
]);
} catch (e) { 
// handle if any one of the request is failed
}

最新更新