Promises, async functions, and Express router functions
Before we get into developing our application, we must take a deeper look at a pair of new ES-2015/2016/2017 features that collectively revolutionize JavaScript programming: The Promise
class and async
functions. Both are used for deferred and asynchronous computation and can make intensely nested callback functions a thing of the past:
- A
Promise
represents an operation that hasn't completed yet but is expected to be completed in the future. We've seen Promises in use. The.then
or.catch
functions are invoked when the promised result (or error) is available. - Generator functions are a new kind of function that can be paused and resumed, and can return results from the middle of the function.
- Those two features were mixed with another, the iteration protocol, along with some new syntax, to create
async
functions.
The magic of async
functions is that we can write asynchronous code as if it's synchronous code. It's still asynchronous...