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
对象包含 a
、b
两个属性,b
属性又包含 c
属性。使用可选链操作符 ?.
,可以避免在访问不存在的属性时,抛出异常。
Nullish Coalescing Operator
Nullish Coalescing Operator 是 ES11 新增的另一个语言特性,用于判断一个值是否为 null 或 undefined,如果是,则返回一个默认值,否则返回该值本身。它使用 ??
语法。
----- - - ----- ----- - - ---------- ----- - - -- ------------- -- ----------- -- -- ------- ------------- -- ----------- -- -- ------- ------------- -- ----------- -- -- -
在上述代码中,a
和 b
变量分别为 null 和 undefined,使用 Nullish Coalescing Operator,可以返回一个默认值。而 c
变量的值为 0,不是 null 或 undefined,因此返回该值本身。
总结
ES11 新增的 Promise.allSettled()、可选链操作符和 Nullish Coalescing Operator,可以帮助我们更好地解决执行顺序的问题。在实际开发中,我们可以使用这些语言特性,避免代码中的错误,并提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/662ca2b8d3423812e4a3cd89