JS——generator(生成器)和yield、与iterator接口的关系、Generator实现异步编程

本文详细介绍了JavaScript中的Generator函数和yield关键字,包括它们的定义、使用方式以及yield*的委托功能。Generator函数允许函数暂停执行并保存状态,通过next方法可以分段执行,并且可以通过yield接收和传递值。此外,还讨论了Generator如何结合iterator接口实现异步编程,提供了一个1秒、2秒、3秒依次输出的例子。
摘要由CSDN通过智能技术生成

一、generator(生成器)
Generator(生成器)是一种函数,声明方式和普通函数类似,只不过要在function后面加个*(function*),
Generator(生成器)是一特殊的函数,定义方式和执行方式和普通函数不一样。
在这里插入图片描述
在这里插入图片描述
二、yield和yield*
yield 表达式或字面量
(1)yield是ES6的新关键字,配合生成器函数使用,使生成器函数执行暂停。yield不能用在普通函数中,会报错,只能配合Generator函数进行使用;
(2)yield表达式本身没有返回值,或者说总是返回undefined,但next()可以带一个参数,该参数会被认为是上一个yield整体的返回值,
即 [rv]= yield [expression], rv的值是下一个next()方法传递来的参数。若next()方法没有传参,则rv为undefined。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
要使用yield*才行。

yield*
MDN链接
yield星号 表达式用于委托给另一个generator 或可迭代对象。
yield星号 表达式本身的值是当迭代器关闭时返回的值(即done为true时)。
在这里插入图片描述
expression可以是一个生成器函数或者可迭代对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

生成器函数具体介绍

generator(生成器)是一个特殊的函数,在js中,一个函数一旦执行,就会运行到最后或者遇到return时结束,运行期间不会有其它代码能打断它,也不能从外部再传入值到函数体内。
但generator函数的出现就可以打断一个函数的完整运行,语法和传统函数完全不同。
generator和传统函数函数不同的是,generator由function 星号 定义(注意多出的星号),并且,除了return语句,还可以用yield返回多次。

简单的说就是在generator函数的执行过程中,yield语句会把你需要的值返回给调用生成器的地方,然后退出函数,下一次调用生成器函数的时候又从

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值