Skip to content

thomasPierreATECNA/PromiseWaterfall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

PromiseWaterfall

This code add a usefull method to promise prototype.

Context

Promise has a nativ method all that send a group of promise in parallel, and succeed if all promises succeed. There is also another method race that send a group of promise in a same time, but succeed when the first one succeed.

But there is no way to send a group of promises one after the other. This is what waterfall does !

HowTo ?

Here's a group of promises :

const promiseA = () => new Promise((resolve, reject) => { setTimeout(() => { console.log('promise A succeed'); resolve(); }, 2000); });
const promiseB = () => new Promise((resolve, reject) => { setTimeout(() => { console.log('promise B succeed'); resolve(); }, 2000); });
const promiseC = () => new Promise((resolve, reject) => { setTimeout(() => { console.log('promise C succeed'); resolve(); }, 2000); });
const promiseD = () => new Promise((resolve, reject) => { setTimeout(() => { console.log('promise D succeed'); resolve(); }, 2000); });
const promiseE = () => new Promise((resolve, reject) => { setTimeout(() => { console.log('promise E succeed'); resolve(); }, 2000); });
const promiseF = () => new Promise((resolve, reject) => { setTimeout(() => { console.log('promise F succeed'); resolve(); }, 2000); });
const promiseG = () => new Promise((resolve, reject) => { setTimeout(() => { console.log('promise G succeed'); resolve(); }, 2000); });
const promiseH = () => new Promise((resolve, reject) => { setTimeout(() => { console.log('promise H succeed'); resolve(); }, 2000); });
const promiseI = () => new Promise((resolve, reject) => { setTimeout(() => { console.log('promise I succeed'); resolve(); }, 2000); });
const promiseJ = () => new Promise((resolve, reject) => { setTimeout(() => { console.log('promise J succeed'); resolve(); }, 2000); });

Here's an array of Promises :

const requests = [promiseA, promiseB, promiseC, [promiseD, promiseE, promiseF], promiseG, [promiseH, promiseI], promiseJ];

As you can see, this array conatains promises and group of promise. Tou can send them all with :

  Promise.waterfall(requests).then(doSomething).catch(doSomethingElse);

this will send A, then B, then, C, then D, E, and F at the same time, then G, the H and I at the same time, then J.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors