Promises
The main difference between callbacks and promises is that with callbacks you tell the executing function what to do when the asynchronous task completes, whereas with promises the executing function returns a special object to you (the promise) and then you tell the promise what to do when the asynchronous task completes.
A Promise
is a proxy for a value not necessarily known when the promise is created. It allows you to associate handlers with an asynchronous action's eventual success value or failure reason. This lets asynchronous methods return values like synchronous methods: instead of immediately returning the final value, the asynchronous method returns a promise to supply the value at some point in the future.
Chaining
A common need is to execute two or more asynchronous operations back to back, where each subsequent operation starts when the previous operation succeeds, with the result from the previous step. We accomplish this by creating a promise chain.
Here's the magic: the then()
function returns a new promise, different from the original:
or
This second promise (promise2
) represents the completion not just of doSomething()
, but also of the successCallback
or failureCallback
you passed in, which can be other asynchronous functions returning a promise. When that's the case, any callbacks added to promise2
get queued behind the promise returned by either successCallback
or failureCallback
.
Last updated