如何处理JavaScript Web Worker任务?

6+

处理JavaScript Web Worker

这是延续 带有说明的Javascript Web Worker示例 文章。在上一篇文章中,我们以素数搜索器示例实现网络工作者。我们也遇到滞后问题。但是在本文中,我们将处理Web Worker任务。

如何处理Javascript Web Worker任务?
如何处理Javascript Web Worker任务?

但是首先,您喜欢上一篇文章吗?

如果是,请分享文章并按文章右侧的红色心形图标。让’现在开始阅读本文。

处理工人错误

postMessage() 方法是与网络工作者交流的关键。但是,那里’网络工作者可以另一种方式通知您的网页— 与 错误 表示错误的事件:


如果由于任何原因或无效数据导致任何问题导致您的后台代码出错,则将错误详细信息打包并发送回页面。这里’一些仅显示错误七星彩中奖查询文本的网页代码:


Along 与 信息 属性,错误对象还包括一个 Lineno文档名称 属性,报告发生错误的行号和文件名。

取消后台任务

我们创建了一个简单的网络工作者示例。并且,现在我们要实现取消后台过程。可以在Web Worker运行时关闭它。

停止工人有两种方法。首先,工人可以通过打电话来阻止自己 关()。更常见的是,创建工作程序的页面将通过调用工作程序将其关闭’s 终止() method. For example, 这里’您可以用来启动简单的“取消”按钮的代码:


单击此按钮停止当前搜索并重新启用搜索按钮。只要记住,一旦以这种方式停止工作,您就可以’不再发送任何七星彩中奖查询,它可以’不能再进行其他操作。

您可以使用以下代码:

返回更复杂的七星彩中奖查询

您是否已按百分比查看进度信息?再给我2分钟的时间来解释此功能。

这是一个更高级的技巧,因为您需要使Web工作人员继续与该网页进行交谈。但是,’掌握的好技巧,因为你’在更高级的Web Worker示例中将使用这种通信方式。

如您所知,网络工作者只有一种与网页对话的方式—with the postMessage() 方法。因此,为了创建此示例,Web Worker需要发送两种类型的七星彩中奖查询:进度通知(工作正在进行中)和素数列表(工作完成时)。诀窍是使这两个七星彩中奖查询之间的区别清晰可见,因此 onMessage 页面中的事件处理程序可以区分两种七星彩中奖查询之间的区别。

最好的方法是在七星彩中奖查询中添加一些额外的信息。例如,当网络工作者发送进度信息时,可以拍打文本标签“进展”在其七星彩中奖查询上。当网络工作者发送素数列表时,可以添加标签“PrimeList.”

这里’s如何重写Web Worker代码以将七星彩中奖查询类型添加到素数列表中:


中的代码 findPrimes() 函数还使用 postMessage() 将七星彩中奖查询发送回网页的方法。它使用相同的两个属性— 信息Type 和。但是现在 信息Type 表示该七星彩中奖查询是进度通知,并且数据包含进度百分比:


页面收到七星彩中奖查询后,需要先检查 messgeType 属性来确定它刚收到的七星彩中奖查询类型。如果它’素数列表,结果将显示在页面中。如果它’s进度通知,然后更新进度文本:


这种七星彩中奖查询传递会变得复杂。但是额外的工作是值得的,因为它可以确保您的代码安全。

让’s conclude now

现在,质数以最直接的方式搜索用户网络工作者—执行一项定义明确的任务。您的页面不’不必这么简单。以下是一些如何使您更高级的示例:

  • 创建多个网络工作者。您的页面没有’不需要坚持一个工人。例如,假设您想让访问者一次启动多个素数搜索。您可以为每个搜索创建一个新的Web工作程序,并跟踪阵列中的所有工作程序。
  • 在网络工作者中创建网络工作者。 Web工作者可以启动自己的Web工作者,向他们发送七星彩中奖查询,然后将其接收回来。对于需要递归的复杂计算任务,例如计算斐波那契数列,此技术很有用。
  • 与网络工作者定期执行任务。网络工作者可以使用 setTimeout()setInterval() 功能,就像普通网页一样。例如,您可以创建一个网络工作者,每分钟检查一次网站是否有新数据。

Web 工人是JavaScript缩小浏览器世界和桌面应用程序世界之间差距的最重要方法之一。他们’我只呆了几年,但他们’对于认真的JavaScript工作来说已经是必不可少的。

6+
概要
如何处理Javascript Web Worker任务?
文章名
如何处理Javascript Web Worker任务?
描述
这是带有解释性文章的Javascript Web Worker示例的延续。在上一篇文章中,我们以质数实现Web Worker。
作者
发布者名称
达斯
出版商徽标