ES11 如何解决执行顺序的问题?

JavaScript 是一门单线程语言,它在执行代码时只有一个主线程,因此会遇到执行顺序的问题,尤其在异步编程中更加明显。ES11(也称为 ECMAScript 2020)新增了一些语言特性,可以帮助我们更好地解决执行顺序的问题。本文将介绍这些新特性,并提供示例代码和指导意义。

Promise.allSettled()

Promise.allSettled() 方法可以接收一个 Promise 数组作为参数,返回一个新的 Promise 对象。当传入的所有 Promise 对象都已经 settled(即已经 fulfilled 或 rejected)时,该新 Promise 对象才会 fulfilled,其结果是一个数组,包含所有传入的 Promise 对象的状态信息。

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

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

上述代码中,promises 数组包含 3 个 Promise 对象,其中第二个 Promise 对象是一个 rejected 状态的 Promise。Promise.allSettled(promises) 返回一个新的 Promise 对象,该 Promise 对象会等待所有的 Promise 对象 settled 后,返回一个数组,包含所有 Promise 对象的状态信息。在本例中,输出结果如下:

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

通过 Promise.allSettled() 方法,我们可以在多个 Promise 对象 settled 后,再进行下一步操作,避免了 Promise 对象执行顺序不可控的问题。

可选链操作符

可选链操作符(Optional Chaining Operator)是 ES11 新增的一个语言特性,可以减少代码中的 null 或 undefined 引用错误。它使用 ?. 语法,可以在对象属性或方法不存在时,不会抛出异常,而是返回 undefined。

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

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

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

上述代码中,obj 对象包含 ab 两个属性,b 属性又包含 c 属性。使用可选链操作符 ?.,可以避免在访问不存在的属性时,抛出异常。

Nullish Coalescing Operator

Nullish Coalescing Operator 是 ES11 新增的另一个语言特性,用于判断一个值是否为 null 或 undefined,如果是,则返回一个默认值,否则返回该值本身。它使用 ?? 语法。

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

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

在上述代码中,ab 变量分别为 null 和 undefined,使用 Nullish Coalescing Operator,可以返回一个默认值。而 c 变量的值为 0,不是 null 或 undefined,因此返回该值本身。

总结

ES11 新增的 Promise.allSettled()、可选链操作符和 Nullish Coalescing Operator,可以帮助我们更好地解决执行顺序的问题。在实际开发中,我们可以使用这些语言特性,避免代码中的错误,并提高代码的可读性和可维护性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/662ca2b8d3423812e4a3cd89