Skip to content

Instantly share code, notes, and snippets.

@iolufemi
Forked from jblashill/promise.spread.js
Last active May 11, 2023 12:22
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iolufemi/37750ab94ab5f6ee7325147e7d5799d6 to your computer and use it in GitHub Desktop.
Save iolufemi/37750ab94ab5f6ee7325147e7d5799d6 to your computer and use it in GitHub Desktop.
An extension to the Promise prototype to "spread" resolved data from Promise.all() to multiple function parameters
Promise.prototype.spread = function(fn) {
return this.then(function() {
if (!arguments || arguments.length === 0) {
return Promise.resolve(fn.apply());
}
if(typeof arguments[0] === 'object' && arguments[0].length > 0){
return Promise.all(arguments[0]);
}else{
return Promise.resolve(arguments[0]);
}
})
.then(function(args){
if(args && !args.length){
args = [args];
}
return fn.apply(null, args);
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment