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页面完全独立。

 

相关内容

热门资讯

结婚典礼感谢致辞 结婚典礼感谢致辞(通用15篇)  在平平淡淡的学习、工作、生活中,要用到致辞的情况还是蛮多的,致辞要...
大鱼海棠配音台词 大鱼海棠配音台词  蛰伏十二年的动画《大鱼海棠》,终于上映了。虽然剧情被很多人吐槽,但美得不像话的画...
小学毕业典礼主持词 小学毕业典礼主持词实用范文  活动对象的不同,主持词的写作风格也会大不一样。在当今中国社会,司仪等是...
篮球赛闭幕词 篮球赛闭幕词(精选15篇)篮球赛闭幕词1各位来宾、同志们:  为期xx天的xxx第二届职工篮球赛,在...
元旦联欢晚会主持词 元旦联欢晚会主持词范文(精选9篇)  主持词分为会议主持词、晚会主持词、活动主持词、婚庆主持词等。在...
大型文艺演出主持词 大型文艺演出主持词  主持词可以采用和历史文化有关的表述方法去写作以提升活动的文化内涵。在当今中国社...
开学典礼致辞 开学典礼致辞15篇  在日常生活或是工作学习中,大家都经常接触到致辞吧,致辞具有“礼仪性”或“仪式化...
农村婚礼司仪主持词 农村婚礼司仪主持词15篇  主持词需要富有情感,充满热情,才能有效地吸引到观众。在当今不断发展的世界...
如何主持会议参考 如何主持会议范文参考  1.宣布会议开始。会议时间到后,若全体与会人员都已到位(至少重要的与会人员已...
韩剧漂亮男人经典台词 韩剧漂亮男人经典台词  1、答案都是在当事人手里的,不知道人们为什么,明明是自己非常了解的问题,但是...
外公七十大寿祝寿词 外公七十大寿祝寿词  外公七十大寿祝寿词  尊敬的外公、外婆、各位长辈、各位来宾:    大家好!今...
《香瓜七兄弟》经典台词 《香瓜七兄弟》经典台词  1. 阿丽呀,我哪好,我改还不行吗  2. 记不记得上回你尿炕 阿姨来了你...
孙子满月酒爷爷致辞 孙子满月酒爷爷致辞(通用6篇)  无论是身处学校还是步入社会,大家都不可避免地会接触到致辞吧,致辞具...
国庆文艺汇演主持词 国庆文艺汇演主持词  主持词要注意活动对象,针对活动对象写相应的主持词。在当今社会中,主持人在活动中...
中秋晚会主持词开场 中秋晚会主持词开场  主持词是主持人在台上表演的灵魂之所在。在现在的社会生活中,主持人的需求越来越高...
婚礼现场新郎致辞 婚礼现场新郎致辞各位亲朋好友:  大家好!  人生能有几次最难忘、最幸福的时刻,今天我才真正从内心里...
班会主持稿 班会主持稿(15篇)  在生活中,我们越来越需要主持稿,主持稿是主持人于节目进行过程中串联节目的稿件...
幼儿园开学典礼的主持词 幼儿园开学典礼的主持词范文(精选6篇)  根据活动对象的不同,需要设置不同的主持词。在当下这个社会中...
教师节晚会活动主持词 教师节晚会活动主持词(精选10篇)  主持词是主持人在台上表演的灵魂之所在。在当下的中国社会,很多场...
同学聚会的主持词 同学聚会的主持词3篇  中学时代,是一个人一生中最美好的时光。小编为大家整理了同学聚会的主持词3篇,...