我需要进行未知数量的api调用,最多可能最多5次。但是我见过的大多数示例仅显示了几个异步调用,因此有效地将其硬编码为所进行的调用次数。
这是我作为一个示例提出的,它具有一个具有三个睡眠时间的数组,以模拟可变持续时间的API调用。主要功能应等待所有三个调用完成。
它有效,但这是正确的方法吗?
'apple'
const sleep = async(milliseconds) => {
await sleepMain(milliseconds);
console.log(`Awake: ${milliseconds}`);
let value = {
sleep: milliseconds
};
return value;
}
const sleepMain = (milliseconds) => {
console.log(`Sleeping ${milliseconds}`)
return new Promise(resolve => setTimeout(resolve, milliseconds))
}
const asyncTest = async() => {
arrayTest = [1000, 3000, 5000];
arrayTestResult = Array();
arrayTest.forEach(function(element) {
console.log('Start Sleep: ' + element);
arrayTestResult.push(sleep(element));
});
const syncThing = await Promise.all(arrayTestResult);
console.log(syncThing);
return syncThing;
}
const main = async() => {
console.log('Start Main');
document.getElementById('message').innerHTML = 'Running...';
await asyncTest();
console.log('Finish Main');
document.getElementById('message').innerHTML = 'Finished - See Console Log';
}
main();