随着 JavaScript 的不断发展,我们已经进入了 ES2021 时间。在这个版本中引入了许多新特性,包括新的消息通道 API,该 API 为前端开发者提供了更好的隔离和安全性。
消息通道 API
所谓消息通道,实际上就是两个 JavaScript 环境之间的通信管道。每个消息通道都有发送端和接收端,可以通过它们传输数据。消息通道 API 让我们可以在两个独立的 JavaScript 环境之间创建一个消息通道,并通过该通道传输数据。这样我们就可以在 Web Worker,iFrame 和主线程之间安全地交换数据。
下面是使用消息通道 API 的示例代码:
-- -------- ----- ------- - --- ----------------- -- - --- ------ - ----------------------- - ------- -- - ------------------------ -- ------ ------------------------------ ------ -- -- ----- -- ------ --- ------ --------- -------------------------------- ---- -------- -- ---- --- ------ ----- ----------------------- - ------- -- - ------------------------ --
该示例中,我们使用 MessageChannel
类创建了一个消息通道,并将其端口( channel.port1
和 channel.port2
) 分别传递给了两个独立的 JavaScript 环境。然后我们可以在这些 JavaScript 环境之间传输数据,例如,我们在主线程内携带一个消息发送到另一个环境内,再在那里获取消息并作出响应,最后,在那里将响应返回主线程。
数字分隔符
在 ES2021 中还引入了一个新的数字分隔符特性。数字分隔符可以用来在数字字面量中方便地添加下划线,以提高可读性。例如:
--- ------ - -------- -- ------- --- --------------- - ---------- -- -------
在这个例子中,我们可以看出,通过使用下划线将数字“1000000”分隔成了更可读的“1_000_000”。
Promise.allSettled
ES6 在 JavaScript 中引入了 Promise,它本质上是一个表示异步操作结果的对象。在 ES2020 中,引入了一个新的 Promise.allSettled 方法来处理并行异步操作,并在它们都完成后返回结果。在 ES2021 中,这个方法得到了改进,现在它不仅能够返回已经解决的 Promise,还能返回拒绝的 Promise。这个新的改进可以让我们快速处理丢失的异步调用。下面是一个例子:
--- -------- - - ------------------------- --------------------------- ------------------------ -- ------------------------------------------- -- - --------------------- ---
在这个例子中,我们创建了一个包含多个 Promise 的数组,并使用 Promise.allSettled 方法并行解决这些 Promise。最终的结果是一个具有每个 Promise 解决状态的对象数组,类似于这样:
- -------- ------------ ------ --------- -------- ----------- ------- ------------ -------- ------------ ------ -------- -
结论
ES2021 中引入了许多有趣的特性和改进,其中最重要的是消息通道 API。这个新的 API 使得前端开发人员能够更加方便,安全地在各个 JavaScript 环境之间传输数据。另外还有数字分隔符和 Promise.allSettled 特性,提高了代码的可读性和方便处理成批的异步调用。如果想要更好地掌握 JavaScript,我们应该了解并掌握这些新技术。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6710862f5f551281026bd2ac