Web Workers 具有很广泛的应用:
- 图像处理:通过从 canvas 或 video 元素获取元素,可以把图像分割成几个不同的区域,并把它们推给不同的 Worker 。
- 大量数据检索。在调用 XMLHTTPRequest 处理大量数据时,可避免冻结 UI 线程
- 北京数据分析。由于在使用 Web Workers 的时候,可以考录 JavaScript 的新应用场景。例如:可以想象在不影响 UI 体验的情况下实时处理用户输入。可以利用这一中可能,可以设计像 word
那样的应用,当用户在打字时,在后台进行查找,帮助用户自动纠错
- 针对本地数据的并发请求。提供本地储存( local Storage )所不能提供的功能,针对 Web Workers 的线程安全储存问题。
- 在视频游戏世界,可以考虑人工智能或者物理引擎的数据发送到 Web Workers
一般来说,只要不需要 DOM ,任何影响用户体验的、耗时长的 JavaScript 代码都可以使用 web Workers 并发处理。使用 Web Workers 需注意:
- workers 初始化时间和通信时间不应该比自身处理时间长
- 使用多个 Workers 时,将会占用大量系统资源,消耗更多的内存
- 代码块之间的依赖关系,需要一些同步的逻辑,并行就没那么简单