Web Work 简介

来源:互联网 发布:手机淘宝怎么用信用卡 编辑:程序博客网 时间:2024/05/22 00:25

通过使用WebWork我们就可以在浏览器后台使用JavaScript,而不占用浏览器自身的线程,WebWorker可以提高应用的额总体性能。一般来说,点击一个按钮运行 javascript 后,在这段代码运行完毕之前页面时无法响应客户的操作的,但是代码可以交给WebWorker运行,这样javascript依然可以响应用户的操作。
WebWorker可以分为两种类型:dedicated Web WorkerShared Web Worker,在javascript中work代表dedicated Web Worker ,及单线程,随着当前页面的关闭而结束,也就意味着代码只能被创建他的页面使用;ShareWork代表 Shared Web Worker,及多线程,可以由多个页面进行访问。
使用方法同WebSocket

    var worker = new Worker('dedicated.js');//创建一个专线,并给Worker的构造函数提供一个指向Javascript文件资源的URL即可    worker.onmessage = function (event) { ... };//接收专线传过来的数据    worke.addEventListener('message', function(event){})

ShareWork 让js多线程,最重要的用途就是从多个页面中提取公共模块,当服务器有跟更新的时候先由ShareWorker处理,然后再由ShareWorker发送到所有的相关页面,这样无论用户同时打开多少个页面,都不会产生冗余对的长连接。
例如淘宝,想让游览器选项卡之间进行通信(也可以用cookie等,但是成本高),

var worker = new SharedWorker('sharedworker.js', ’mysharedworker’ );//第二个参数如果提供,那么这个参数将作用于这个共享线程的名称。    worker.port.onmessage = function(event){...};//从端口接收数据    worker.port.postMessage('字符串');//向端口发送普通的文本数据    worker.port.postMessage({ username: 'usertext';     live_city: ['data-one', 'data-two', 'data-three','data-four']});//向端口发送结构化数据。json数据格式
通过terminate()来终止服务。
原创粉丝点击