ECMAScript(简称 ES)是一种用于编写 Web 前端应用程序的脚本语言标准。每年都会有新版本发布,新版本中包含了许多新的功能和语法特性。在本文中,我们将介绍 ES 2020 中的两个新功能,分别是 Promise.allSettled 和 BigInt,并且将提供详细的学习和指导意义。
Promise.allSettled
Promise.allSettled 是 ES 2020 中对 Promise.all 的增强版。Promise.all 是将多个 Promise 对象给定的数组并行执行,并且只要有一个 Promise 出现了异常,就立即返回一个 rejected 状态的 Promise,否则返回一个 resolved 状态的 Promise,这种行为通常被称为“短路行为”。但是,在某些情况下,我们可能需要知道所有 Promise 对象的执行结果,而不是只需要一个 Promise 对象执行出错就中止。这就是 Promise.allSettled 要解决的问题。Promise.allSettled 会等待所有 Promise 对象完成并返回它们的全部结果(包括 resolved 和 rejected 两种状态),这样我们可以根据每个 Promise 对象的结果来做出相应的处理。以下是 Promise.allSettled 的用法:
-- -------------------- ---- ------- ----------------------------- --------- ---------- ------------- -- - ---------------------- -- - -- -------------- --- ------------ - -------------------- --------------- -------- ---- ----- ------------------- - ---- - -------------------- --------------- ------ ---- ------ -------------------- - --- ---
在这个示例中,我们使用 Promise.allSettled 执行了一个包含三个 Promise 对象的数组,每个 Promise 对象的索引值分别为 0、1、2。当 Promise.allSettled 返回时,我们遍历 results 数组,根据每个 Promise 对象的状态来输出相应的结果。
BigInt
BigInt 是 ES 2020 中的另一个新功能,它允许开发人员表示超出 JavaScript 数值界限的整数。在 JavaScript 中,数字类型是基于 IEEE 754 浮点数标准实现的,它们采用双精度浮点数表示,因此只能准确地表示 -2^53 至 2^53 之间的整数,如果数字超出这个范围,则可能会出现不准确的计算结果。
BigInt 类型使用后缀“n”定义,例如:
const bigIntNumber = 1234567890123456789012345678901234567890n;
BigInt 类型还支持各种运算和比较功能,例如:
const max = Number.MAX_SAFE_INTEGER + 1n; console.log(max > Number.MAX_SAFE_INTEGER); // true console.log(max.toString()); // "9007199254740992"
这里我们使用 BigInt 表示 Number.MAX_SAFE_INTEGER + 1,并检查这个数值是否大于 Number.MAX_SAFE_INTEGER。由于这个数值超出了 JavaScript 数值表示范围,因此需要使用 BigInt 表示。运行结果为 true,因为 BigInt 类型为我们提供了超出 JavaScript 正常数值界限的表示能力。
总结
在本文中,我们介绍了 ES 2020 中的两个新功能:Promise.allSettled 和 BigInt,并提供了详细的学习和指导意义。Promise.allSettled 解决了在某些情况下需要等待所有 Promise 对象执行完成才做出处理的问题,而 BigInt 则允许我们表示超出 JavaScript 数值界限的整数。通过掌握这些新功能,我们可以更好地编写和维护 Web 前端应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647af836968c7c53b068e2c5