实现yield的方法是通过生成器函数(generator function)来实现的,生成器函数通过内部控制函数执行的流程,实现了生成器对象的迭代和暂停。
下面是实现yield的步骤:
第一步,定义生成器函数
生成器函数是在函数名前面添加星号(*),并且在函数内部使用yield语句。yield语句将函数的执行暂停,并将值返回给调用者。
示例1,一个简单的生成器函数:
function* foo() {
yield "first";
yield "second";
yield "third";
}
第二步,生成器对象的调用
生成器函数并不立即执行,而是返回一个生成器对象。调用生成器对象的next方法将会使生成器函数开始执行,在执行到yield语句时立即暂停,直到有新的next方法调用产生。
示例2,调用生成器对象的next方法:
let f = foo();
console.log(f.next()) // {value: "first", done: false}
console.log(f.next()) // {value: "second", done: false}
console.log(f.next()) // {value: "third", done: false}
console.log(f.next()) // {value: undefined, done: true}
第三步,可以用for...of语句简化迭代过程
可以通过for...of语句来简化生成器对象的迭代过程,所需要实现的只是return语句,如果在生成器函数内部出现调用return语句,那么迭代会停止。如果没有return语句,则默认迭代完成,返回结果为undefined。
示例3,使用for...of语句进行迭代:
for(let item of foo()) {
console.log(item);
}
总结来说,javascript实现yield的方法,就是通过定义生成器函数和生成器对象的调用,并使用yield语句实现迭代和暂停。需要注意生成器函数的定义和生成器对象的调用,以及迭代过程中的return语句。
希望这个markdown文本对你有所帮助,如果还有问题,请随时提出来。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript实现yield的方法 - Python技术站