ES9 之 Generator.prototype 对象详解

阅读时长 4 分钟读完

什么是 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

纠错
反馈