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

 

相关内容

热门资讯

常用商务英语口语   商务英语是以适应职场生活的语言要求为目的,内容涉及到商务活动的方方面面。下面是小编收集的常用商务...
六年级上册英语第一单元练习题   一、根据要求写单词。  1.dry(反义词)__________________  2.writ...
复活节英文怎么说 复活节英文怎么说?复活节的英语翻译是什么?复活节:Easter;"Easter,anniversar...
2008年北京奥运会主题曲 2008年北京奥运会(第29届夏季奥林匹克运动会),2008年8月8日到2008年8月24日在中华人...
英语道歉信 英语道歉信15篇  在日常生活中,道歉信的使用频率越来越高,通过道歉信,我们可以更好地解释事情发生的...
六年级英语专题训练(连词成句... 六年级英语专题训练(连词成句30题)  1. have,playhouse,many,I,toy,i...
上班迟到情况说明英语   每个人都或多或少的迟到过那么几次,因为各种原因,可能生病,可能因为交通堵车,可能是因为天气冷,有...
小学英语教学论文 小学英语教学论文范文  引导语:英语教育一直都是每个家长所器重的,那么有关小学英语教学论文要怎么写呢...
英语口语学习必看的方法技巧 英语口语学习必看的方法技巧如何才能说流利的英语? 说外语时,我们主要应做到四件事:理解、回答、提问、...
四级英语作文选:Birth ... 四级英语作文范文选:Birth controlSince the Chinese Governmen...
金融专业英语面试自我介绍 金融专业英语面试自我介绍3篇  金融专业的学生面试时,面试官要求用英语做自我介绍该怎么说。下面是小编...
我的李老师走了四年级英语日记... 我的李老师走了四年级英语日记带翻译  我上了五个学期的小学却换了六任老师,李老师是带我们班最长的语文...
小学三年级英语日记带翻译捡玉... 小学三年级英语日记带翻译捡玉米  今天,我和妈妈去外婆家,外婆家有刚剥的`玉米棒上带有玉米籽,好大的...
七年级英语优秀教学设计 七年级英语优秀教学设计  作为一位兢兢业业的人民教师,常常要写一份优秀的教学设计,教学设计是把教学原...
我的英语老师作文 我的英语老师作文(通用21篇)  在日常生活或是工作学习中,大家都有写作文的经历,对作文很是熟悉吧,...
英语老师教学经验总结 英语老师教学经验总结(通用19篇)  总结是指社会团体、企业单位和个人对某一阶段的学习、工作或其完成...
初一英语暑假作业答案 初一英语暑假作业答案  英语练习一(基础训练)第一题1.D2.H3.E4.F5.I6.A7.J8.C...
大学生的英语演讲稿 大学生的英语演讲稿范文(精选10篇)  使用正确的写作思路书写演讲稿会更加事半功倍。在现实社会中,越...
VOA美国之音英语学习网址 VOA美国之音英语学习推荐网址 美国之音网站已经成为语言学习最重要的资源站点,在互联网上还有若干网站...
商务英语期末试卷 Part I Term Translation (20%)Section A: Translate ...