Get to know MDN better
定义通过迭代器协议从生成器函数返回的值。如果省略,则返回 undefined。
rv返回传递给生成器的 next() 方法的可选值,以恢复其执行。
yield 关键字使生成器函数执行暂停,yield 关键字后面的表达式的值返回给生成器的调用者。它可以被认为是一个基于生成器的版本的 return 关键字。
yield 关键字实际返回一个 IteratorResult 对象,它有两个属性,value 和 done。value 属性是对 yield 表达式求值的结果,而 done 是 false,表示生成器函数尚未完全完成。
一旦遇到 yield 表达式,生成器的代码将被暂停运行,直到生成器的 next() 方法被调用。每次调用生成器的 next() 方法时,生成器都会恢复执行,直到达到以下某个值:
如果将参数传递给生成器的 next() 方法,则该值将成为生成器当前 yield 操作返回的值。
在生成器的代码路径中的 yield 运算符,以及通过将其传递给 Generator.prototype.next() 指定新的起始值的能力之间,生成器提供了强大的控制力。
警告:不幸地是,next() 是不对称的,但这并不是没有帮助:它总是向当前暂停的 yield 发送一个值,但是返回的是 yield 之后表达式的运算结果。
以下代码是一个生成器函数的声明。
一旦生成器函数已定义,可以通过构造一个迭代器来使用它。
你也可以将带有 next(value) 的值发送给生成器。在 rv = yield expression 这个语法中,step 用于接收返回值——尽管第一次调用 next() 时忽略传递给生成器 next() 方法的值。
| ECMAScript® 2027 Language Specification # prod-YieldExpression |
启用 JavaScript 以查看此浏览器兼容性表。