Generator函数与async函数对照

Generator函数与async函数对照

Generator函数:

Generator函数是ES2015供应的异步解决方案,与一般函数有很大的差别;

  • 特性:
  1. 在function关键字背面跟一个(*)号;
  2. 在函数体内部运用yield表达式作为一个状况;

Generator函数返回一个遍历器,可经由过程for……of要领遍历每一个状况;

  • 用法:

实行Generator并不马上实行,返回一个遍历器,遍历器经由过程挪用next()、throw()或许return()实行下一个状况、捕捉毛病或许完毕遍历器;

async函数:

async函数是ES2017供应的异步函数语法,是generator的语法糖,然则用法上与Generator函数照样有很大差别;

  • 特性:
  1. 在function关键字前面跟一个async关键字;
  2. 在函数体内部运用await表达式;

async函数返回一个promise对象;

  • 用法:

实行async函数会马上实行,和一般函数一样,然则返回一个promise对象;

二者对照:

  1. Generator 出现在ES2015中,async 出现在ES2017中,async 是 Generator 的语法糖;
  2. 实行体式格局差别,Generator 实行须要运用实行器(next()等要领);async 函数自带实行器,与一般函数的实行一样;
  3. async 的语法语义越发清晰,async 示意异步,await 示意守候;而 Generator 函数的(*)号和 yield 的语义就没那末直接了;
  4. Generator 中 yield 背面只能跟 Thunk 函数或 Promise 对象;而 async 函数中 await 背面可所以 promise 对象或许原始范例的值(会自动转为马上resovle的promise对象);
  5. 返回值差别,Generator 返回遍历器,比拟于 async 返回 promise 对象操纵越发贫苦。

参考:

ECMAScript 6入门

    原文作者:木木俞
    原文地址: https://segmentfault.com/a/1190000018755709
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞