【发布时间】:2021-04-27 09:56:56
【问题描述】:
我需要在 node.js 程序中执行未知数量的 http 请求,并且它需要同步发生。只有当一个人得到响应时,下一个请求才会被执行。如何在 JS 中实现它?
我用requset包同步试过了:
function HttpHandler(url){
request(url, function (error, response, body) {
...
})
}
HttpHandler("address-1")
HttpHandler("address-2")
...
HttpHandler("address-100")
并与 request-promise 异步:
async function HttpHandler(url){
const res = await request(url)
...
}
HttpHandler("address-1")
HttpHandler("address-2")
...
HttpHandler("address-100")
它们都不起作用。正如我所说,我可以通过程序获得未知数量的 http 请求,这取决于最终用户。
有什么解决办法吗?
【问题讨论】:
-
nodejs中没有同步http请求这种东西(nodejs中的所有网络都是异步的)。您的意思是说您需要一个接一个地按顺序运行它们,即使它们是异步的?并且,请说明您要如何处理这些多次调用的响应,因为这将影响代码的编写方式。目前,它们似乎并不相互依赖,因此它们可以并行运行,而无需按照严格的顺序对其进行排序。
-
请不要尝试
-
@jfriend00 http 请求可以是异步的,我很好。我只需要程序是同步的。例如,当一个http得到响应然后发送下一个时得到通知,我想我可以使用某种形式的回调,但我不知道如何实现它,因为我没有所有的列表运行前的请求。它将是完全动态的。
-
请展示您问题的真实逻辑,以便我们为问题提供完整的解决方案。
标签: javascript node.js http asynchronous async-await