一、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语句会把你需要的值返回给调用生成器的地方,然后退出函数,下一次调用生成器函数的时候又从