JSFiddle - React, Tailwind, and code Playground

by Sergei Sokolov

JavaScript

console.clear();
const delay = _ => new Promise(rs => setTimeout(rs, 3e3));

async function notSoFast(promise) {
  result = await Promise.all([ promise, delay()]);
  return result[0];
}

async function runPromisesInSequence(promises) {
  for (let i=0; i<promises.length; i++) {
    if(i === 0) {
      console.timeEnd( await promises[0]);
    } else {
      console.timeEnd( await notSoFast(promises[i]));
    }
  }
}

function makePr(label, dur) {
  return new Promise(rs => {
    console.log('%s started', label);
    console.time(label); // начало отсчёта
    setTimeout(_ => {
      console.log('%s timer completed', label);
      rs(label);
    }, dur);
  });
}

runPromisesInSequence([
  makePr('r1', 1000),
  makePr('r2', 5000),
  makePr('r3', 0000),
]);