小编Abb*_*ain的帖子

如何限制并行 api 请求

问题是我有一个 API 任务列表,但问题是我无法同时从我的端点到服务器访问超过 3 个 API(这是服务器限制,它不会响应同一请求的 URL,该 URL 具有更多处理中调用的 API 数量少于 3 个)。因此,我找到了一种方法来完成此任务,但我知道有一种更好的方法,但对如何做没有任何线索,但我找到了一个简单的解决方案,即依次点击 API 并等待响应,然后点击另一个,但这需要太多时间

更优化的解决方案如果N = 3,那么我将同时执行taskList中的'task1','task2'和'task3'。一旦任务 2 完成,您就可以执行“任务 4”,依此类推。这是我想要在不使用任何库的情况下实现的解决方案。

const taskList = [
  "task1",
  "task2",
  "task3",
  "task4",
  "task5",
  "task6",
  "task7",
  "task8",
  "task9",
  "task10",
];

const dummyAPICalled = (task) => {
  console.log(task, "started");
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      console.log(task, "ended");
      resolve(true);
    }, Math.random() * 20000);
  });
};
Run Code Online (Sandbox Code Playgroud)

依次点击调用的API并等待响应。

for await (const task of taskList) {
    await dummyAPICalled(task);
}
Run Code Online (Sandbox Code Playgroud)

同时并行访问所有 API,但由于服务器要求而未得到响应

const promises = taskList.map((task) => …
Run Code Online (Sandbox Code Playgroud)

javascript concurrency multithreading

7
推荐指数
1
解决办法
1282
查看次数

标签 统计

concurrency ×1

javascript ×1

multithreading ×1