Web Workers的用例是什么?

我正在寻找使用Web Workers API的真实世界。

  • John Resig (jQuery的名声)有一些有趣的使用networking工作者的例子 – 游戏,graphics,encryption。

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

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

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

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

    旧的工作stream程是:更改#。 去喝咖啡,而JavaScript通过对其他数字的变化进行调整,并且网页在3分钟内没有反应 – 在我优化它到地狱和后面。 拿回咖啡。 更换第二个#。 重复多次。 点击保存button。

    与工作人员的新工作stream程可能是:更改#。 得到一个状态消息,有些事情正在重新计算,但你可以改变其他的#。 更改#s。 完成更改后,等待状态更改为“所有计算完成后,现在可以查看最终的#并保存”。

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

另一个用例:

在后台压缩/解压缩文件,如果您有大量图像和其他媒体文件以压缩格式从服务器交换。

多一个用例:

这涉及到创build和维护web worker中的索引并查询它以进行高效的search。 更多细节在这里。