Promises are the best choice for dealing with asynchronous operations in the most efficient and simplest manner. They can handle multiple asynchronous operations very easily and gives better error handling than callbacks or events. We can also say that promises are the ideal or the best choice for handling multiple callbacks at the same time, thus avoiding the undesired callback hell situation. Promises do provide a better scope for a user to read the code in a more efficient and effective manner especially if that particular code is used for implementing many or multiple asynchronous operations.
A promise mainly has three states:
It can be constructed using a constructor,