- 异步编程
- Promise
- Generator
- async/await
异步编程
目前在 JavaScript 中进行异步编程可以采用的形式有回调函数、事件监听、观察者模式、Promise、Generator 和 async/await。
Promise
- 是一个拥有
then()的对象或函数; - 有
pending、resolved和rejected三种状态,只能由pending变成resolved或rejected,resolved和rejected互相不能转换; - 执行成功时调用
then()的第一个回调函数,失败时调用第二个回调函数; - 实例对象的
then()必须返回一个新的 Promise 实例; - 解决了多重嵌套的回调函数带来的「回调地狱」;
- 没有提供原生的中止 Promise 链的方法。
Generator
async/await
- 可以理解为是 Generator 的语法糖,
async相当于*,await相当于yield; - 内置执行器;
async函数的返回值是 Promise 实例;await后是 Promise 实例或会被转化为 Promise 实例的普通值;await只能在async函数中使用。
