JavaScript: пример параллельного запуска нескольких асинхронных операций

Самая простая демонстрация того, как в JavaScript параллельно запустить нескольких асинхронных операций. Может пригодиться тем, кто только начинает разбираться с промисами.

Начиная с ECMAScript 2015 (6-я версия ECMA-262), можно поступить следующим образом:

function doubleAfter2Seconds(x) {
  return new Promise(resolve => {
    resolve(x * 2);
  }, 2000);
}

async function addAsync(x) {
  const { a, b, c } = await Promise.all([
    doubleAfter2Seconds(10),
    doubleAfter2Seconds(20),
    doubleAfter2Seconds(30),
  ]);

  return x + a + b + c;
}