Skip to content

Instantly share code, notes, and snippets.

@LB-Digital
Last active September 10, 2018 23:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LB-Digital/736839472eef9a9007469d99c0ad562e to your computer and use it in GitHub Desktop.
Save LB-Digital/736839472eef9a9007469d99c0ad562e to your computer and use it in GitHub Desktop.
JS Chaining Promises
function myFunc(things, stuff){
return new Promise( (resolve,reject) =>{ // setup
var result = [];
resolve(result);
}).then( (result) =>{ // Action 1
return new Promise( (resolve,reject) =>{
myFirstFunction(things,stuff)
.then(response => resolve(response))
.catch(err => resolve([])); // nothing yet so return empty results array
})
}).then( (results) =>{ // Action 2
return new Promise( (resolve,reject) =>{
mySecondFunction(things,stuff){
.then(response =>{
results = results.concat(response)
return resolve(results);
})
.catch(err => resolve(results)); // nothing new so just return existing results
}
});
}).then( (results) =>{ // Action 3
return new Promise( (resolve,reject) =>{
myThirdFunction(things,stuff)
.then(response =>{
results = results.concat(response)
return resolve(results);
})
.catch(err => resolve(results)); // nothing new so just return existing results
})
}).then( (results) =>{ // Finalise response
return new Promise( (resolve,reject) =>{
if (results.length == 0){
return reject('nothing_found');
}else{
return resolve(results);
}
})
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment