我正在寻找使用Web Workers API的真实场景。
3 回答
John Resig(以 jQuery 闻名)在这里有一堆有趣的使用 web worker 的例子——游戏、图形、加密。
另一个用途是 Web I/O - 换句话说,在后台轮询 URL。这样您就不会阻止 UI 等待轮询结果。
另一个实际用途:在 Bespin 中,他们使用 Web Workers 来进行语法高亮显示,当您使用该应用程序时,您不希望阻止您的代码编辑。
来自Mozilla:worker 有用的一种方法是允许您的代码在不阻塞用户界面线程的情况下执行处理器密集型计算。
作为一个实际的例子,想想一个有一个大表#s的应用程序(这是现实世界,顺便说一句——取自我大约2年前编程的一个应用程序)。您可以通过输入字段更改表格中的一个#,并且在相当密集的过程中重新计算不同列中的一堆其他数字。
旧的工作流程是:更改 #. 去喝杯咖啡,而 JavaScript 正在处理对其他数字的更改,并且网页在 3 分钟内没有响应——在我将其优化到地狱并返回之后。回来喝咖啡。更改第二个#。重复多次。单击保存按钮。
工人的新工作流程可能是:更改#。获取正在重新计算某些内容的状态消息,但您可以更改其他 #s。更改更多#s。完成更改后,等待状态更改为“所有计算完成,您现在可以查看最终的 #s 并保存”。
我已经使用它们将大量数据从浏览器发送到服务器。显然,您可以通过常规 AJAX 调用来执行此操作,但如果这占用了每个主机名的宝贵连接之一。此外,如果用户在此过程中进行了页面转换(例如单击链接),则上一页中的 JavaScript 对象会消失,并且您无法处理回调。当使用 web worker 时,此活动发生在带外,因此您可以更好地保证它会完成。
另一个用例:
在后台压缩/解压缩文件,如果您有大量从服务器以压缩格式交换的图像和其他媒体文件。