2010-05-05 75 views
141

我正在寻找使用Web Workers API的真实世界。Web Workers的用例有哪些?

+0

他们是否支持移动/ webkit平台? – dmp 2010-05-05 13:42:00

+0

不知道肯定,但会猜测他们是。 – 2010-05-05 13:44:57

+6

@danp浏览器支持:http://caniuse.com/webworkers – 2013-08-22 07:43:34

回答

114
  • John Resig(jQuery的名声)有a bunch of interesting examples of using web workers here - 游戏,图形,加密。

  • 另一个用途是Web I/O - 换句话说,在后台轮询URL。这样你就不会阻止用户界面等待轮询结果。

  • 另一个实际用途:在Bespin中,他们使用Web Workers进行语法高亮显示,在您使用应用程序时,不想想要阻止您的代码编辑。

  • Mozilla:工作方式有用的一种方法是让您的代码执行处理器密集型计算而不会阻塞用户界面线程。

    作为一个实际的例子,想想一个有大量#s表的应用程序(这是真实世界,顺便说一句 - 取自我编程的应用程序〜2年前)。您可以通过输入字段更改表格中的一个#,并在相当密集的过程中重新计算不同列中的一堆其他数字。

    旧的工作流程是:更改#。去喝咖啡,而JavaScript通过对其他数字的更改进行嘎吱嘎吱,并且网页在3分钟内无响应 - 在我将它优化为地狱和背部之后。拿回咖啡。更换第二个#。重复很多次。点击保存按钮。

    与工作人员的新工作流程可能是:更改#。获取状态消息,指出正在重新计算某些内容,但您可以更改其他#号。更改#s。完成更改后,请等到状态更改为“所有计算完成后,您现在可以查看最终的#并保存”。

+5

伟大的链接!我从来没有听说过工人......嗯,工人。 (时间去长时间,热水澡......) – 2010-07-10 00:59:06

+39

我知道这是一个两岁的答案,但我只是想提到,你不应该需要Web工作人员的项目#2(轮询URL)。 XHR异步发生并且不会阻塞;不需要在单独的线程上运行XHR请求。 (当然,在现代应用程序中,您希望使用WebSockets而不是轮询。) – josh3736 2012-05-01 04:03:19

+4

@ josh3736 - 您是对的,但我现在好奇很多并行XHR异步请求是否会以某种方式使浏览器不高兴?此外,您需要本地资源来处理XHR响应,以便工作人员可能有用。 – DVK 2012-08-13 10:39:27

29

我已经使用它们从浏览器向服务器发送大量数据。显然,你可以通过常规的AJAX调用来做到这一点,但是如果这会占用每个主机名称的宝贵连接之一。此外,如果用户在此过程中进行了页面转换(例如,单击链接),则上一页中的JavaScript对象将消失,并且无法处理回调。当使用网络工作者时,此活动发生在带外,因此您可以更好地保证它完成。

5

另一种使用情况:

压缩/解压缩的背景文件,如果你有很多是从压缩格式的服务器交换图像和其它媒体文件。

+30

这不应该发生在JavaScript中。使用专为有效压缩图像数据的算法已经*压缩了图像(PNG,JPEG)。在顶部投放另一层压缩可以实际增加数据的大小。对于其他类型的数据(例如大JSON文件),压缩应该由浏览器使用标准的HTTP压缩来处理。 **如果你在使用JavaScript进行压缩,你可能*做错了*。** – josh3736 2012-05-01 03:59:51

+10

我看到一些用户没有资格使用这个用例,但这就是我的意思。考虑像MS这样的应用程序,就像一个功能强大的文档编辑器,通过它你可以在一个文件中嵌入图像,音乐文件,数据,Excel表格等。并考虑你有一个基于Web的客户端和一个桌面客户端以及一个IOS/Android客户端。对于这种用例,可以将所有文件内容存储在一个zip文件中,然后在每个客户端解压缩。 – sbr 2013-01-29 18:25:50

+0

我希望以上评论有意义。如果你能想出更聪明的方法来实现这一点,请给出你的建议。 – sbr 2013-01-29 18:26:27

相关问题