发送大量获取请求的最快方法是什么

问题描述 投票:0回答:2

我使用 JavaScript 发送大约 0 - 10 000 个获取请求。

目前我正在返回一个承诺,其中包含一个循环获取请求的 for 循环。然而,这非常慢。

await new Promise((resolve, reject) => {
  for (let i = 0; i < 10 000; i++) {
    let promise = fetch(`website.com/page={i}`)
    .then() // process data

    promise_array.push(prom);


  Promise.allSettled(promise_array).then(() => {
    resolve();
  })
}

有什么更有效的方法来做到这一点?

javascript es6-promise
2个回答
0
投票

使用

p-limit
模块来满足此金额的请求!

您可以批量进行:

let request_array = [];
for (let i = 0; i < 10_000; i++)
  request_array.push(async () => fetch(`website.com/page={i}`))

let batch = 20;
while (request_array.length > 0) {
  let responses = await Promise.all(
    request_array
      .splice(0, batch)
      .map(async request=>request())
  );

  for (let response of responses) {
    // deal with the response
  }
}

如果您在 Node.js 中执行此操作,请查看 keep-alive,它将通过重用连接来加快速度。


-2
投票

使用 Promise.all(),如下所示:

Promise.all([promise1, promise2, promise3, promise4])

这将返回已解决的响应

© www.soinside.com 2019 - 2024. All rights reserved.