- 需先了解 Promise【链接地址】
- JavaScript 中的 异步函数方法。
- JavaScript 在很短的时间内从回调演变为 Promises,从 ES2017(ES8) 开始,使用 async/await 语法让异步 JavaScript 变得更简单。
- async(异步) 函数是 promises 和 generator 的组合,基本上,它们是对 promises 的更高级别的抽象。
注意:async/await 基于 promises。
- 它们降低了 promises 对一些固定语法样板的要求,打破了链式 promise“不能切断链式”的限制。
- 在 ES2015 中引入 Promise 时,它们旨在解决异步代码的问题,并且他们确实做到了,但在 ES2015 和 ES2017 的两年中,人们发现很明显 promises 不是最终的解决方案。
- 引入 Promises 来解决著名的回调地狱问题,但是因为他们自身的复杂性,引入了更复杂的语法。
- 它们是良好的原语,可以向开发人员公开更好的语法,所以当时机成熟时,我们就有了 异步函数(async functions)。
- 它们使代码看起来像是同步,但它在后台是异步和非阻塞的。
- async(异步) 函数返回一个 promise,如下例 1 所示:
const doSomethingAsync = () => {return new Promise((resolve) => {setTimeout(() => resolve('I did something'), 3000)
})
}