一文看懂 Web Worker
内容提要
Web Workers API是HTML5提供的前端开发能力,可以在后台线程中运行脚本操作,避免长耗时任务导致页面假死。它创造了多线程运行环境,允许主线程将任务分配给worker线程,主线程和worker线程相互不干扰。然而,worker线程一旦新建就会一直运行,不会被主线程的活动打断,这可能会造成资源浪费。使用Web Workers API需要注意同源限制、文件限制、DOM操作限制和通信限制。在实战中,Web Workers可以用于加密数据、预取数据、预渲染、复杂数据处理和预加载图片等场景。然而,启动worker线程会耗费资源,主线程中使用XMLHttpRequest也会消耗主线程资源。
关键要点
-
Web Workers API是HTML5提供的前端开发能力,可以在后台线程中运行脚本操作,避免长耗时任务导致页面假死。
-
Web Workers创造了多线程运行环境,允许主线程将任务分配给worker线程,主线程和worker线程相互不干扰。
-
worker线程一旦新建就会一直运行,不会被主线程的活动打断,可能造成资源浪费。
-
使用Web Workers API需要注意同源限制、文件限制、DOM操作限制和通信限制。
-
Web Workers可以用于加密数据、预取数据、预渲染、复杂数据处理和预加载图片等场景。
-
启动worker线程会耗费资源,主线程中使用XMLHttpRequest也会消耗主线程资源。
-
worker线程的使用有同源限制、文件限制、DOM操作限制和通信限制。
-
worker线程无法读取本地文件,必须从网络加载脚本,且与主线程同源。
-
worker线程不能执行alert、confirm等操作,但可以使用XMLHttpRequest发出ajax请求。
-
主线程可以通过postMessage与worker线程通信,worker线程也可以通过self.postMessage与主线程通信。
-
在实际应用中,Web Worker可以用于加密数据、预取数据、预渲染、复杂数据处理和预加载图片等。
-
使用worker线程时要注意启动和关闭,避免资源浪费。