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