资讯专栏INFORMATION COLUMN

Generator函数与async函数对比

Winer / 1141人阅读

摘要:函数与函数对比函数函数是提供的异步解决方案,与普通函数有很大的不同特征在关键字后面跟一个号在函数体内部使用表达式作为一个状态函数返回一个遍历器,可通过方法遍历每个状态用法执行并不立刻执行,返回一个遍历器,遍历器通过调用或者执行下一个状态捕获

Generator函数与async函数对比 Generator函数:

Generator函数是ES2015提供的异步解决方案,与普通函数有很大的不同;

特征:

在function关键字后面跟一个(*)号;

在函数体内部使用yield表达式作为一个状态;

Generator函数返回一个遍历器,可通过for……of方法遍历每个状态;

用法:

执行Generator并不立刻执行,返回一个遍历器,遍历器通过调用next()、throw()或者return()执行下一个状态、捕获错误或者结束遍历器;

async函数:

async函数是ES2017提供的异步函数语法,是generator的语法糖,但是用法上与Generator函数还是有很大不同;

特征:

在function关键字前面跟一个async关键字;

在函数体内部使用await表达式;

async函数返回一个promise对象;

用法:

执行async函数会立刻执行,和普通函数一样,但是返回一个promise对象;

两者对比:

Generator 出现在ES2015中,async 出现在ES2017中,async 是 Generator 的语法糖;

执行方式不同,Generator 执行需要使用执行器(next()等方法);async 函数自带执行器,与普通函数的执行一样;

async 的语法语义更加清楚,async 表示异步,await 表示等待;而 Generator 函数的(*)号和 yield 的语义就没那么直接了;

Generator 中 yield 后面只能跟 Thunk 函数或 Promise 对象;而 async 函数中 await 后面可以是 promise 对象或者原始类型的值(会自动转为立即resovle的promise对象);

返回值不同,Generator 返回遍历器,相比于 async 返回 promise 对象操作更加麻烦。

参考:

ECMAScript 6入门

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103174.html

相关文章

  • 浅谈async·await

    摘要:在语言中,函数替换的不是表达式,而是多参数函数,将其替换成一个只接受回调函数作为参数的单参数函数。为什么里面必须使用函数呢,因为我们需要确保传入的值只有一个,利用其回调函数,来进行递归自动控制函数的流程,接收和交还程序的执行权 前言 这篇文章主要是梳理一下自己对阮一峰大神写的关于async/await文章,有写得不对的地方以及理解得不对的地方,各位大佬请指错! 对比 简单对比传统异步,...

    Magicer 评论0 收藏0
  • 理解 async/await

    摘要:而函数的命令后面则可以是或者原始类型的值,,,但这时等同于同步操作返回值是。抛出的错误而会被方法回调函数接收到。 ES7 提出的async 函数,终于让 JavaScript 对于异步操作有了终极解决方案。No more callback hell。async 函数是 Generator 函数的语法糖。使用 关键字 async 来表示,在函数内部使用 await 来表示异步。想较于 G...

    kid143 评论0 收藏0
  • JavaScript:从Callback到Async的发展过程——实例演示

    摘要:回调函数回调函数是将一个函数作为参数,传递给另一个函数,然后在外部函数中调用该函数来完成某种例程或动作。案例源码回调函数处理都是基于的发展利用方法自动迭代 阅读时间:12 minutes文章类型:理论知识 & 案例演示案例需求:用JavaScript实现,3个小球先后运动,完成接力赛跑案例源码:见文章最后 引言: 前端开发中,异步处理必不可少;过去,我们经常用回调函数来完成异步处理,...

    levius 评论0 收藏0
  • JavaScript的async 的学习

    摘要:函数内部语句返回的值,会成为方法回调函数的参数。也就是说,只有函数内部的异步操作执行完,才会执行方法指定的回调函数。命令后面的对象如果变为状态,则的参数会被方法的回调函数接收到。 async 函数 ES2017 标准引入了 async 函数,使得异步操作变得更加方便,就是 Generator 函数的语法糖。对比一下: const fs = require(fs); const rea...

    Leo_chen 评论0 收藏0
  • Generator函数

    摘要:语法上,首先可以把它理解成,函数是一个状态机,封装了多个内部状态。返回的遍历器对象,可以依次遍历函数内部的每一个状态。 写在前面: 这一篇是关于ES6中生成器函数相关总结和理解... Generator函数的定义 在阮一峰老师的书中的说法是: Generator 函数有多种理解角度。语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。执行 Gener...

    yagami 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<