Delayed Iteration

JavaScript

function delayedIteration(max, i = max + 1) {
  return new Promise(resolve => {
  console.log(i)
    if (i === 1) {
      resolve();
      return;
    }
    delayedIteration(max, --i).then(() =>
      setTimeout(() => {
        console.log(i);
        resolve();
      }, 3000)
    );
  })

}

delayedIteration(10);