Understanding and implementing basic Promises
Promises are very useful in many of the core aspects of Angular. Although they are no longer bound to the core framework service, they still manifest themselves throughout Angular's APIs. The implementation is considerably simpler than Angular 1, but the main rhythms have remained consistent.
Note
You can refer to the code, links, and a live example of this at http://ngcookbook.herokuapp.com/5195 .
Getting ready
Before you start using promises, you should first understand the problem they are trying to solve. Without worrying too much about the internals, you can classify the concept of a Promise into three distinct stages:
Initialization: I have a piece of work that I want to accomplish, and I want to define what should happen when this work is completed. I do not know whether this work will be ever completed; also, the work may either fail or succeed.
Pending: I have started the work, but it has not been completed yet.
Completed: The work is finished...