Implementing promise barriers with $q.all()
You might find that your application requires the use of promises in an all-or-nothing type of situation. That is, it will need to collectively evaluate a group of promises, and that collection will be resolved as a single promise if and only if all of the contained promises are resolved; if any one of them is rejected, the aggregate promise will be rejected.
How to do it…
The $q.all()
method accepts an enumerable collection of promises, either an array of promise objects or an object with a number of promise properties, and will attempt to resolve all of them as a single aggregate promise. The parameter of the aggregate resolved handler will be an array or object that matches the resolved values of the contained promises. This is shown here:
var deferred1 = $q.defer() , promise1 = deferred1.promise , deferred2 = $q.defer() , promise2 = deferred2.promise; $q.all([promise1, promise2]).then($log.log); deferred1.resolve(456); deferred2.resolve...