HTML5中共享的工人和工人的区别是什么?

阅读时长 4 分钟读完

在HTML5中,SharedWorker和普通的Worker都是用于在后台执行 JavaScript 代码的 API。它们可以在Web Workers之间方便地共享数据,并且在主线程上没有阻塞效应,提高了Web应用程序的性能。

然而,这两种工人之间存在一些重要的区别,下面将详细介绍:

Worker vs SharedWorker

Worker

Worker是最常用的Web Worker类型。每个Worker实例只能与一个创建它的页面进行通信。当一个Worker被创建时,它会启动一个新的线程并在其中运行指定的JavaScript文件。主线程可以向Worker发送消息,并在需要时接收Worker发送的消息。

以下是一个使用Worker的示例代码:

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

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

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

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

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

在这个例子中,我们首先创建了一个Worker实例并向它发送了一条消息。当Worker接收到这条消息时,它会打印一条消息,并发回另一条消息。

SharedWorker

相比之下,SharedWorker是一个可以与多个页面共享的Web Worker实例。它可以在多个页面中同时运行,并且如果其中一个页面发送了一条消息,所有其他页面都会收到相同的消息。

以下是一个使用SharedWorker的示例代码:

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

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

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

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

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

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

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

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

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

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

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

在这个例子中,我们首先创建了一个SharedWorker实例并向它发送了一条消息。当页面连接到SharedWorker时,connect事件将被触发,并为该页面建立一个通信端口。通过此端口,我们可以向SharedWorker发送消息并接收来自其他页面的消息。

总结

SharedWorkerWorker都是可用于在后台执行JavaScript代码的Web Worker类型。Worker仅能与创建它的页面通信,而SharedWorker可以与多个页面共享数据。在设计Web应用程序时,我们应该根据需要选择合适的Worker类型。

以上是HTML5中共享的工人和工人的区别。希望这篇文章能为您提供深入学习和指导。

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

纠错
反馈