workers

简介: web worker 是运行在后台的 JavaScript,不会影响页面的性能。JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带来很大的不便,无法充分发挥计算机的计算能力

1.前言 what


web worker 是运行在后台的 JavaScript,不会影响页面的性能。

JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带来很大的不便,无法充分发挥计算机的计算能力


2.页面监听worker


页面类似主人一样 会受到worker/机器人的信息


var w = new Worker("./index.js")
        w.onmessage = function(e){
            box.innerHTML = e.data
        }



3. worker


机器人帮我们/主人 干活的


var total = 0;
for (var i = 1; i < 10000; i++){
    total+=1
}
//告知主人 活干完了
postMessage(total)



4. 主人发任务


主人可以主动个机器人发布任务指令


var worker= new Worker("./workers.js");
  // 主线程传给worker数据,各种数据类型,包括二进制
   worker.postMessage({ type: "start", msg: "start work" })



5.机器人接收主人的任务



//// self代表线程自身,即子线程的全局对象 self this 也可以省略
console.log("worker 文件", self)
self.addEventListener('message', function(e) {
    var data = e.data;
   if(data.type==="start"){
        self.postMessage("收到主人,我已经开始工作");
    }
  }, false);



6.worker 关闭


worker内部关闭自身

self.close(); // Terminates the worker.

页面关闭

w.terminate();

导入其他模块

importScripts('script1.js', 'script2.js');

钩子

message 监听发回来的消息

error       监听worker错误处理


7.worker的不同


由于 web worker 位于外部文件中,它们无法访问下例 JavaScript 对象:

window 对象

document 对象

parent 对象

Worker 线程可以

navigator对象

location对象。




相关文章
|
2月前
|
并行计算 JavaScript 前端开发
worker_threads 多线程
worker_threads 多线程
56 4
|
程序员 Linux Go
译 | Concurrency is not Parallelism(一)
译 | Concurrency is not Parallelism
75 0
|
缓存 Go
译 | Concurrency is not Parallelism(四)
译 | Concurrency is not Parallelism
65 0
|
算法 安全 Shell
译 | Concurrency is not Parallelism(二)
译 | Concurrency is not Parallelism(二)
63 0
|
负载均衡 安全 Go
译 | Concurrency is not Parallelism(三)
译 | Concurrency is not Parallelism(三)
69 0
|
安全
suricata6 workers 流程
suricata6 workers 流程
128 0
|
自然语言处理 应用服务中间件 nginx
五分钟进步系列之worker_connections
五分钟进步系列之worker_connections
|
存储 JavaScript 前端开发
nodejs中使用worker_threads来创建新的线程
nodejs中使用worker_threads来创建新的线程
|
开发工具