ES12 中 Generator 函数的新功能与技巧

阅读时长 3 分钟读完

Generator 函数在 ES6 中被引入,可以方便地控制程序的执行流程。ES12 中,Generator 函数有了新的功能,下面我们来详细介绍一下。

1. yield* 表达式

在 Generator 函数中使用 yield 可以将程序的执行流程暂停,并返回一个值,或者将函数传递给另一个函数进行处理。ES12 中 yield* 表达式允许我们将程序的执行流程传递给另一个 Generator 函数,并可以通过传递参数的方式控制代码执行流程。

下面是一个示例代码:

-- -------------------- ---- -------
--------- ----- -
  ----- --------
  ----- --------
-

--------- ----- -
  ------ ------
  ----- ----
-

--- ------ --- -- ------ -
  -----------------
-
-- ------- ----- ----- -
展开代码

上面的代码中,bar 函数使用了 yield* 表达式,将程序的执行流程传递给了 foo 函数,然后再返回执行到 bar 函数。这个例子比较简单,但是在实际的开发中,我们可以使用 yield* 表达式将程序的执行流程传递给更多的函数,从而实现更加复杂的控制流程。

2. yield 表达式的返回值

在 Generator 函数中,我们可以使用 yield 表达式返回一个值,在 ES12 中,我们可以通过 .return(value) 方法来提前结束函数并返回一个值。同时,在使用 yield 表达式返回一个值时,我们也可以使用 .next(value) 方法来向生成器函数中传递参数。

一个示例代码如下:

-- -------------------- ---- -------
--------- ----- -
  ----- - - ----- --
  ----- - - ----- - - --
  ------ --
-

----- --------- - ------
------------------------------
-------------------------------
---------------------------------
-- ------- - ------ -- ----- ----- -
-- ------- - ------ -- ----- ----- -
-- ------- - ------ -- ----- ---- -
展开代码

上面的代码中,我们使用了 .return() 方法在第二次执行 yield 语句之前,提前结束了函数,并返回了一个值。

3. next 方法的返回值

在 ES12 中,我们还可以通过 .next() 方法获得 Generator 函数最后一次执行的返回值。这个功能很方便,可以减少代码的复杂度,从而提高代码的可读性。

下面是一个示例代码:

-- -------------------- ---- -------
--------- ----- -
  ----- --
  ----- --
  ------ --
-

----- --------- - ------
------------------------------------ -- ------- -
------------------------------------ -- ------- -
------------------------------------ -- ------- -
------------------------------------ -- ------- ---------
展开代码

总结

在 ES12 中,Generator 函数有了新的功能,包括 yield* 表达式、yield 表达式的返回值和 .next() 方法的返回值。这些新功能可以提高程序处理流程的灵活性、代码的可读性和可维护性,所以我们要多加深入学习和掌握使用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649d151248841e98949cd179

纠错
反馈

纠错反馈