GithubHelp home page GithubHelp logo

palerdot / promises-all Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bhargavthakrar/promises-all

0.0 3.0 0.0 10 KB

Track down promise states of all promise functions executing in parallel. Similar to promise.all function, but it rejects the complete promise.all() even if any one of the promise fails, where as promises-all npm will indiviudally return you the states.

License: MIT License

JavaScript 78.71% HTML 21.29%

promises-all's Introduction

Build Status Known Vulnerabilities

promises-all

Track down promise states of all promise functions executing in parallel. Similar to promise.all function, but it rejects the complete promise.all() even if any one of the promise fails, where as promises-all npm will indiviudally return you the states.

If you have used promises in your javscript code, then you might know one very good functionality of it, that is promise.all(). Fires multiple promise calls in parallel! Awesome!!

Recently I got stuck wiht this. My requirement was to fire 3 API calls parallely, but don't really care if any one of the api calls fail, unless all of them are failing! Then thats a different story. But, i could not achieve this, because promise.all rejects all the promise even if any on of them rejects.

There are solutions one would suggest that dont reject your indiviudal functions, rather always resolve them and then check once promise.all is done with all promise calls. But then why should I move that logic of checking fail case outside the function which is actually making an API call. Doesnt make sense to me.

Hence, I wrote a small plugin as well as an npm package which does exacltly what I explained earlier.

Promises-all will always resolve, irrespective of any promise calls rejects or resolves. Yes, it will reject also but only if there is some exception in the code!

It uses bluebird as the promise library when in node.

Below is the example:

Require:

var PromiseAll = require('promises-all');

Sample Call:

PromiseAll.all([p1(), p2()]).then(function(response) {
	console.log(response);
}, function(error) {
	console.log(error);
});

function p1() {
	return new bluebird(function(resolve, reject) {
		setTimeout(function() {
			resolve('p1 resolved');
		}, 1000);
	});	
}

function p2() {
	return new bluebird(function(resolve, reject) {
		setTimeout(function() {
			reject('p2 rejected');
		}, 3000);
	});	
}

Output:

{
	resolve: [ 'p1 resolved' ],
	reject: [ 'p2 rejected' ] 
}

promises-all's People

Contributors

bhargavthakrar avatar

Watchers

James Cloos avatar Arun Kumar avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.