当前位置: 首页 > Web前端 > HTML

WebWorker学习笔记

时间:2023-03-28 17:03:50 HTML

一、什么是WebWorkerWebWorker的作用是为JavaScript创建一个多线程环境,让主线程创建Worker线程,并将一些任务分配给后者运行。主线程运行的同时,Worker线程在后台运行,互不干扰。等到Worker线程完成计算任务,再将结果返回给主线程。这样做的好处是,一些计算密集型或高延迟的任务由Worker线程承担,主线程(通常负责UI交互)会很流畅,不会被阻塞或变慢。Worker线程一旦创建成功,就会一直运行,不会被主线程上的活动(比如用户点击按钮或提交表单)打断。这样有利于随时响应主线程的通信。但是,这也会导致Worker消耗更多的资源,不应该过度使用,一旦用完就应该关闭。WebWorker有以下几点需要注意:(1)同源限制分配给Worker线程运行的脚本文件必须与主线程的脚本文件同源。(2)DOM限制了Worker线程所在的全局对象。与主线程不同的是,不能读取主线程所在网页的DOM对象,不能使用document、window、parent等对象。但是,工作线程可以访问导航器对象和位置对象。(3)通信Worker线程和主线程不在同一个上下文中,不能直接通信,必须通过消息来完成。(4)脚本限制Worker线程执行alert()和confirm()方法,但可以使用XMLHttpRequest对象发送AJAX请求。(5)文件限制工作线程不能读取本地文件,即不能打开本地文件系统(file://),它加载的脚本必须来自网络。2.基本用法