webworker(DedicatedWorker, SharedWorker, )
创始人
2024-05-31 11:08:29
0

1 DedicatedWorker

创建一个新的 worker 十分简单。你所要做的就是调用 Worker() 构造函数,指定一个要在 worker 线程内运行的脚本的 URI,如果你希望能够收到 worker 的通知,可以将 worker 的 onmessage 属性设置成一个特定的事件处理函数。

var myWorker = new Worker("my_task.js");
myWorker.onmessage = function (oEvent) {console.log("Called back by the worker!\n");
};

停止 Worker 的方法有两种:在主网页中调用 worker terminate(),或在 Worker 本身内部调用 self.close()。 

2 SharedWorker

一个普通的web worker只能被创建它的页面访问。如果你想在多个页面之间共享一个web worker,你可以使用SharedWorker。SharedWorker可以被从同一个源(域)加载的所有页面访问。

SharedWorker接口代表了一种特定类型的worker,可以从几个浏览上下文访问,比如几个窗口、iframe甚至worker。他们实现了不同于dedicated worker的接口,并且具有不同的全局范围,

如果可以从多个浏览上下文访问SharedWorker,那么所有这些浏览上下文必须共享完全相同的起源(相同的协议、主机和端口)。

var worker = new SharedWorker("/html5/web-worker-shared.js");
worker.port.addEventListener("message",function(event) {alert(event.data);}, false
);
worker.port.start();

 消息传递:

onconnect = function (e) {var port = e.ports[0];port.postMessage('A new connection! The current connection number is ' + connect_number);port.onmessage = function (e) {var instruction = e.data.instruction || e.data;var results = execute_instruction(instruction);port.postMessage('...');};port.start();
};

应用场景:

  • 使用importScripts()加载更多脚本
  • 附加错误处理程序和
  • 运行port.close()方法防止在特定端口上进行进一步通信。

共享网络工作者在几年内可能不会成为一种可行的技术,但它们为JavaScript开发的未来带来了令人兴奋的机会。让我们希望浏览器供应商能够提供一些像样的跟踪和调试工具!

dedicate worker和sharedworker的区别:

  • Worker只能被创建它的脚本访问,SharedWorker可以被来自同一个域的任何脚本访问。
  • SharedWorker似乎比Worker有更多的功能。①共享的全球范围。所有SharedWorker实例共享一个全局作用域。②共享工作者可以与多个连接一起工作。它将消息发送到端口,以允许各种脚本之间的通信。③专用的工作线程被简单地绑定到它的主连接上,不能向其他脚本(工作线程)发布消息。

 3 ServiceWorker

Service Worker继承了HTML5 Shared Worker的所有限制和行为。它可以创建xmlhttprequest,使用WebSockets,从窗口和浏览器接收消息,使用IndexedDB,并将消息发布到其他窗口。

Service worker预计将在全局范围内提供一个名为onconnect的函数。浏览器将在启动时调用onconnect,并传递一个事件。worker应该访问此事件的ports属性来提取一个稳定的通信端口回浏览器,并在worker的生命周期内持久化它

sharedworker和serviceworker的区别:

  • 在它自己的全局脚本上下文中运行(通常在它自己的线程中)
  • 不绑定到特定的页面
  • 没有DOM访问权限

与SharedWorker不同:

  • 可以运行没有任何页面吗
  • 可以在不使用时终止,并在需要时再次运行(例如,它是事件驱动的)
  • 是否定义了升级模型
  • 只有HTTPS(稍后会详细说明)

现在service worker的最佳使用场景是提供离线能力。开发人员可以注册一个service worker作为网络代理提供网络拦截。即使没有可用的网络时,这个代理也能够对缓存的数据和资源或者是已经生成的内容作出响应

和现有的HTML5数据缓存功能有很大的不同,service worker的离线能力是可编程的。Russell称它是一个:“让你做出选择去做哪些事的、可编程的、浏览器内置的代理”。由于service worker运行于后台,它和当前的Web页面完全独立。

 

相关内容

热门资讯

教师节对联 教师节对联(精选55句)  在社会一步步向前发展的'今天,大家总少不了接触一些耳熟能详的对联吧,对联...
新年的对联 新年的对联(精选115句)  在现在的社会生活中,大家都经常接触到对联吧,对联作为一种习俗,是汉族传...
描写天气谚语 描写天气谚语大全  在平凡的学习、工作、生活中,大家都有令自己印象深刻的谚语吧,谚语是劳动人民的生活...
雷声大雨点小歇后语是什么   雷声大雨点小——(虚张声势):比喻做起事来声势造得很大,实际行动却很少。  雷声大,雨点小 : ...
小学优秀班主任事迹材料 小学优秀班主任事迹材料(精选11篇)  根据自己的兴趣爱好,成立活动小组,再聘请相关学科老师为指导教...
王羲之兰亭序全文及译文 王羲之兰亭序全文及译文  永和九年,岁在癸丑,暮春之初,会于会稽山阴之兰亭,修稧事也。下面是小编为你...
仰仗是褒义词吗 仰仗是褒义词吗  仰仗常指事物的根基状态,依靠;依赖,我们看看下面的相关资料吧!  仰仗是褒义词吗?...
自考英语写作基础试题及答案 自考英语写作基础试题及答案  从小学、初中、高中到大学乃至工作,我们都要用到试题,试题是命题者根据一...
你陪伴我长大的作文500字 你陪伴我长大的作文500字  在我六岁那年,一个小小的你——植物小马诞生了。你没有其他玩具那么美丽,...
战争与和平的作者是谁 战争与和平的作者是谁  《战争与和平》以极其简洁的文字,卓越的、令人惊叹的心理分析,生动、鲜活地描绘...
记叙文知识架构详解 记叙文知识架构详解  语文阅读在平时测试、期末考试中都占有很大的比重,而记叙文阅读是学生失分率最高的...
野性的呼唤简介及读书笔记 野性的呼唤简介及读书笔记  作者:杰克伦敦  改写:何碧珠  出版社:中国东方出版社  内容简介: ...
湖水像什么比喻句摘抄 湖水像什么比喻句摘抄  明净的湖水晃动着绿岛和白云的倒影,仿佛仙境一般。以下是小编给大家整理的湖水像...
爱国诗人屈原简介 爱国诗人屈原简介  屈原我国古代伟大的爱国诗人。名平,字原。战国时期楚国贵族出身。下面是小编为你带来...
厨房的对联 关于厨房的对联  对联,又称对偶、门对、春贴、春联、对子、楹联等,是写在纸、布上或刻在竹子、木头、柱...
星星闪烁改为拟人句 星星闪烁改为拟人句大全  在学习、工作或生活中,大家都看到过许多经典的句子吧,根据语气的不同句子可以...
小学生比喻句 小学生比喻句(通用15篇)小学生比喻句1  1、幸福是染色的画笔,能染红鲜花,也能染绿树叶;能给清澈...
最新元宵节猜灯谜活动方案 最新元宵节猜灯谜活动方案(精选6篇)  为了确保活动有序地进行,常常需要预先制定活动方案,活动方案可...
小学语文作文辅导题 小学语文作文辅导题小学语文作文辅导题1.从小开始学会积累 小学生作文指导在看图写话的练习中,要把图写...
春节的对联 春节的对联15篇  在学习、工作乃至生活中,大家都看到过对联吧,对联源于中国文字语音的对称性,出现应...