Implementing promise notifications
AngularJS also offers the ability to provide notifications about promises before a final state has been reached. This is especially useful when promises have long latencies and updates on their progress is desirable, such as progress bars.
How to do it…
The promise.then()
method accepts a third argument, a notification handler, which can be accessed through the deferred an unlimited number of times until the promise state has been resolved. This is shown here:
promise .then( // resolved handler function() { $log.log('success'); }, // empty rejected handler null, // notification handler $log.log ); function resolveWithProgressNotifications() { for (var i=0; i<=100; i+=20) { // pass the data to the notification handler deferred.notify(i); if (i>=100) { deferred.resolve() }; }; } resolveWithProgressNotifications(); // 0 // 20 // 40 // 60 // 80 // 100 // "success"
Tip
JSFiddle: http://jsfiddle.net/msfrisbie/5798q0ru/