什么是 Generator
Generator 是 ECMAScript 6 新加入的语法特性之一,它可以让我们在函数执行的过程中暂停执行并从暂停处继续执行,实现了一个函数可以分段执行的能力。
在 Generator 中,使用 yield 关键字可以将函数的执行过程暂停,并将值返回给调用方。当再次调用 Generator 时,可以从上次停止的地方继续执行。
接下来,我们重点介绍 Generator 的 prototype 对象。
Generator.prototype 对象
Generator.prototype 对象是 Generator 函数的原型对象,它包含了一些方法,可以用于 Generator 对象的实例化、执行、数据读取等操作。
Generator.prototype.next()
Generator.prototype.next() 方法用于向生成器函数传入一个参数并执行到下一个 yield 语句处,返回一个包含 value 和 done 两个属性的对象。
其中,value 表示当前执行 yield 语句时返回的值,done 表示生成器函数是否执行完毕的布尔值。
以下是一个使用 Generator.prototype.next() 方法的示例代码:
-- -------------------- ---- ------- --------- ------------- - ----- -- ----- -- - --- ----- - -------------- -------------------------- -- ------- -- ----- ------ -------------------------- -- ------- -- ----- ------ -------------------------- -- ------- ---------- ----- -----
Generator.prototype.return()
Generator.prototype.return() 方法用于终止生成器函数的执行并返回一个包含 value 和 done 两个属性的对象。
其中,value 表示当前执行 yield 语句时返回的值,done 表示生成器函数是否执行完毕的布尔值。
以下是一个使用 Generator.prototype.return() 方法的示例代码:
-- -------------------- ---- ------- --------- ------------- - ----- -- ----- -- - --- ----- - -------------- -------------------------- -- ------- -- ----- ------ ---------------------------- -- ------- ---------- ----- ----- -------------------------- -- ------- ---------- ----- -----
Generator.prototype.throw()
Generator.prototype.throw() 方法用于在生成器函数内部抛出一个异常,并返回一个包含 value 和 done 两个属性的对象。
其中,value 表示当前执行 yield 语句时返回的值,done 表示生成器函数是否执行完毕的布尔值。
以下是一个使用 Generator.prototype.return() 方法的示例代码:
-- -------------------- ---- ------- --------- ------------- - --- - ----- -- ----- -- - ----- --- - --------------- - - --- ----- - -------------- -------------------------- -- ------- -- ----- ------ --------------------------- ---------------- ---- ---------- -- ------- ---------- ----- ----- -------------------------- -- ------- ---------- ----- -----
总结
Generator.prototype 对象是 Generator 函数的原型对象,它包含了一些可以用于生成器对象的实例化、执行、数据读取等操作的方法,如 next(), return(), throw() 等。
使用 Generator 可以将一个函数分成多个执行片段,并在使用过程中灵活的暂停和继续执行,这种特性在一些场景下非常有用,如异步编程等。
学会使用 Generator.prototype 对象和其方法,可以更好的利用和掌握 Generator 这一语法特性,提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64fe2b1295b1f8cacdd1a90e