Ala*_*kas 4 javascript self web-worker
我不明白7,8,9行:
var worker = new Worker('doWork.js');
worker.addEventListener('message', function(e) {
console.log('Worker said: ', e.data); // Here it send's the data.
}, false);
worker.postMessage('Hello World'); // Send data to our worker.
//7 self.addEventListener('message', function(e) {
//8 self.postMessage(e.data);
//9 }, false);
Run Code Online (Sandbox Code Playgroud)
做这段代码的是什么?1.什么代码行在第7行触发消息事件?2.在第8行的postMessage中传递了什么数据?3.自我做什么?
关键字self用于接近Worker的API,这意味着无论范围(即使它是一个闭包),您都可以访问Worker的API(我不确定您是否可以重新声明self其他内容并且松散Worker的API引用,但我相信它受JS保护,因此你无法覆盖它).
以下几行:
self.addEventListener('message', function(e) {
self.postMessage(e.data);
}, false);
Run Code Online (Sandbox Code Playgroud)
只是为事件添加一个事件监听器'message',它将事件中的数据发送回webworker在其生成的上下文中的引用(最常见的是当前浏览器线程或父工作者).我们可以引用false布尔值确定的内容:
useCapture可选如果为true,则useCapture指示用户希望启动捕获.启动捕获后,指定类型的所有事件将被分派到已注册的侦听器,然后再分派到DOM树中它下面的任何EventTarget.向上冒泡树的事件不会触发指定使用捕获的侦听器.有关详细说明,请参阅DOM Level 3事件和JavaScript事件顺序.如果未指定,则useCapture默认为false.注意:对于附加到事件目标的事件侦听器; 事件处于目标阶段,而不是捕获和冒泡阶段.无论useCapture参数如何,目标阶段中的事件都将触发元素上的所有侦听器.
注意:useCapture仅在主要浏览器的更新版本中成为可选项; 例如,它在Firefox 6之前不是可选的.您应该提供此参数以获得最广泛的兼容性.
wantsUntrusted如果为true,则侦听器将接收由Web内容调度的合成事件(对于chrome,默认值为false,对于常规Web页面,默认值为true).此参数仅在Gecko中可用,主要用于加载项中的代码和浏览器本身.有关示例,请参阅特权页和非特权页之间的交互.
来自:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
关键字的更多技术说明self:
WorkerGlobalScope接口的self只读属性返回对WorkerGlobalScope本身的引用.大多数情况下,它是特定的范围,如DedicatedWorkerGlobalScope,SharedWorkerGlobalScope或ServiceWorkerGlobalScope.
引用自:https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/self
| 归档时间: |
|
| 查看次数: |
1074 次 |
| 最近记录: |