问题是我有一个 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)