promises chain

by Vladymyr Shevchuk

JavaScript

/*
let action = (i) => {
  return () => {
    return new Promise((resolve, reject) => {
      
      setTimeout(() => {
        console.log(i);
        resolve();
      }, 1000);
      
    });
  }
}

let p = Promise.resolve();

let a = [1, 2, 3, 4, 5];

for (let i of a) {
  p = p.then(action(i));
}
*/

let a = [1, 2, 3, 4, 5];

a.reduce(
  (p, i) => p.then(
    () => new Promise(
      (resolve, reject) => {

        setTimeout(() => {
          console.log(i);
          resolve();
        }, 1000);

      }
    )
  ),
  Promise.resolve()
);