说说对 async / await 的理解以及 Generator 的优势

15 阅读1分钟

async 函数是 Generator 函数的语法糖,用关键字 async 来表示。async 函数是一个返回 Promise 对象的函数,用于表示一个异步操作,在其内部,可以使用 await 关键字等待一个 Promise 对象的解析,然后再返回其解析的结果,如果抛出异常,最终会传递给 Promise 对象的 onRejected() 方法。

async 较 Generator 的优势:

  • 内置执行器:async 函数自带执行器,调用方式跟普通函数的调用一样。而 Generator 函数的执行必须依靠执行器。

  • 更好的语义:async 和 await 相较于 * 和 yield 更加语义化。

  • 更广的适用性:async 函数的 await 后面可以是 Promise, 也可以是原始类型的值。yield 命令后面只能是 thunk 函数或 Promsie 对象。

  • 返回值是 Promise:async 函数返回的是 Promise 对象,比 Generator 函数返回的 Iterator 对象方便,可以直接使用 then()方法进行调用。