log async actions in order

by Vladymyr Shevchuk

JavaScript

async function triggerActions(count) {
  let i = 1;
  for (i; i <= count; i++) {
    await processActionWrap(i);
  }  
}

function processAction(i, callback) {
  let time = Math.floor(Math.random()*1000);
  setTimeout(function() {
    callback(`Processed Action ${i} in ${time}`);
  }, time);
}

function processActionWrap(i) {
  return new Promise((resolve, reject) => {
    processAction(i, (str) => {
      console.log(str);
      resolve(str);
    });
  });
}

triggerActions(5);