示例多个异步等待调用Javascript

时间:2019-07-19 12:20:19

标签: javascript node.js asynchronous async-await

我需要进行未知数量的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();

https://jsfiddle.net/kanineAU/yv21Leqf/

0 个答案:

没有答案