A promise can be returned from a then()
method of a promise.
You can then call its then()
method, creating a chain of promises.
I think the best way to explain this concept is to use fetch()
, a JavaScript feature we’ll introduce later on in details during this masterclass.
In short, we use fetch()
to get a resource from the network.
In this example, we call fetch()
to get JSON from GitHub with my user details (try with yours) using this URL: https://api.github.com/users/flaviocopes
fetch('https://api.github.com/users/flaviocopes')
fetch()
returns a promise which resolves to a Response
object. When we got that, we need to call its json()
method to get the body of the response:
fetch('https://api.github.com/users/flaviocopes')
.then(response => response.json())
This in turn returns a promise, so we can add another .then()
with a callback function that is called when the JSON processing has finished, with the job of writing the data we got to the console:
fetch('https://api.github.com/users/flaviocopes')
.then(response => response.json())
.then(data => {
console.log('User data', data)
})
For comparison, with async functions we’d write the above code in this way:
const getData = async () => {
const response = await fetch('https://api.github.com/users/flaviocopes')
const data = await response.json()
console.log('User data', data)
}
getData()
Lessons this unit:
0: | Introduction |
1: | Callbacks |
2: | Timers |
3: | Promises |
4: | Async functions |
5: | ▶︎ Chaining promises |
6: | Orchestrating promises |