在 JavaScript 中,yield
是一个关键字,用于生成器函数(Generator Function)中。生成器函数是一种特殊类型的函数,它可以在执行过程中暂停,并且可以多次从暂停的位置继续执行。
yield
关键字用于定义生成器函数中的一个暂停点,并返回一个生成器对象的值。每次调用生成器函数时,执行会从上次暂停的位置恢复,并执行到下一个 yield
关键字处,然后返回一个由 yield
关键字后面的表达式计算得到的值。
下面是一个简单的生成器函数的示例:
function* generatorFunction() {
yield 1;
yield 2;
yield 3;
}
const generator = generatorFunction(); // 创建一个生成器对象
console.log(generator.next()); // 输出: { value: 1, done: false }
console.log(generator.next()); // 输出: { value: 2, done: false }
console.log(generator.next()); // 输出: { value: 3, done: false }
console.log(generator.next()); // 输出: { value: undefined, done: true }
在上面的示例中,我们定义了一个生成器函数 generatorFunction
,它使用 yield
关键字定义了三个暂停点。每次调用生成器对象的 next()
方法时,执行会从上次暂停的位置继续,并返回一个包含 value
和 done
属性的对象。value
属性表示 yield
关键字后面的表达式的值,done
属性表示生成器函数是否已经执行完毕。
使用 yield
关键字可以控制生成器函数的执行流程,使得函数的执行可以在不同的时间点暂停和恢复。这在某些场景下非常有用,例如处理大量数据、异步操作的串行执行等。