adrianvlupu
11/3/2016 - 7:47 PM

Sequential promise resolve

Sequential promise resolve

//https://remysharp.com/2015/12/18/promise-waterfall

var guid = 0;
function run() {
  guid++;
  var id = guid;
  return new Promise(resolve => {
    // resolve in a random amount of time
    setTimeout(function () {
      console.log(id);
      resolve(id);
    }, (Math.random() * 1.5 | 0) * 1000);
  });
}

var promises = Array.from({ length: 10 }).reduce(function (acc) {
  return acc.then(function (res) {
    return run().then(function (result) {
      res.push(result);
      return res;
    });
  });
}, Promise.resolve([]));

promises.then(console.log);
        var f1 = () => {
            return new Promise((resolve, reject) =>{
                setTimeout(()=>{
                    resolve('p1 complete');
                }, 1000);
            });
        };

        var f2 = () => {
            return new Promise((resolve, reject) =>{
                setTimeout(()=>{
                    resolve('p2 complete');
                }, 1000);
            });
        };


        [f1, f2].reduce((x, y)=>{
            console.log(x,y);
            return x.then(data => {
                console.log(data);
                return y();
            });
        }, Promise.resolve()).then(last => {
            console.log(last);
        });

var p1 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log('p1');
        resolve();
    }, 1000);
});

var p2 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log('p2');
        resolve('a');
    }, 2000);
});


[p1,p2].reduce((x, y)=>{
    return x.then(()=>{
        return y;
    });
}, Promise.resolve())
.then(()=>{
    console.log('finished all');
});