• 异步编程
    • Promise
    • Generator
    • async/await

    异步编程

    目前在 JavaScript 中进行异步编程可以采用的形式有回调函数、事件监听、观察者模式、Promise、Generator 和 async/await。

    Promise

    1. 是一个拥有 then() 的对象或函数;
    2. pendingresolvedrejected 三种状态,只能由 pending 变成 resolvedrejectedresolvedrejected 互相不能转换;
    3. 执行成功时调用 then() 的第一个回调函数,失败时调用第二个回调函数;
    4. 实例对象的 then() 必须返回一个新的 Promise 实例;
    5. 解决了多重嵌套的回调函数带来的「回调地狱」;
    6. 没有提供原生的中止 Promise 链的方法。

    Generator

    async/await

    1. 可以理解为是 Generator 的语法糖,async 相当于 *await 相当于 yield
    2. 内置执行器;
    3. async 函数的返回值是 Promise 实例;
    4. await 后是 Promise 实例或会被转化为 Promise 实例的普通值;
    5. await 只能在 async 函数中使用。