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.
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/