【发布时间】:2022-01-09 00:09:59
【问题描述】:
我正在构建一个像提要一样的小型原型。我有很多项目。对于数组中的每一项,我都需要进行 API 调用并加载结果。
如果我有太多的记录和太多的 APi 调用要进行,这是一个性能问题。
我试图为每 2-3 个 API 调用停止循环 100 毫秒,然后恢复执行直到数组完成。
我做了一个 POC,但效果不佳。您能帮我解决以下代码中的问题吗
// work in progress
var arr = ["val1", "val2", "val3", "val4", "val5", "val6"];
let breakCounter;
async function seriesAPI(arr) {
breakCounter = 2;
for (let i = 0; i <= arr.length; i++) {
if (breakCounter - arr.indexOf(arr[i]) === 0) {
await interval(arr[i]);
breakCounter = breakCounter + 2;
} else {
makeAPI(arr[i])
//console.log(arr[i]);
}
}
}
function makeAPI(val) {
console.log(val);
// fetch(url, {method: 'POST', body: JSON.stringify(arr[i])}).then(res => console.log(res));
}
function interval(arrval) {
console.log("Buffer time");
setTimeout(() => {
makeAPI(arrval)
}, 1000);
}
seriesAPI(arr);
【问题讨论】:
-
使用承诺和睡眠
-
@John JavaScript 没有睡眠功能。
-
您是否希望将所有“许多”并行 API 调用限制为一次仅执行 2-3 个?我建议你考虑throttling
-
@Deykun 制作一个。
标签: javascript