angular2 web worker中的停止事件

Posted

技术标签:

【中文标题】angular2 web worker中的停止事件【英文标题】:Stop event in angular2 web worker 【发布时间】:2016-06-06 11:28:55 【问题描述】:

如何阻止 Web Worker 中的事件传播?

如果你在 web worker 中得到的东西没有 stopPropagation 方法。

谢谢

更新

具体点击我现在感兴趣的事件。

事件对象包含:

altKey: false
button: 0
clientX: 780
clientY: 82
metaKey: false
movementX: 0
movementY: 0
offsetX: 361
offsetY: 51
region: undefined
screenX: 784
screenY: 177
shiftKey: false

更新 2

在 angular2 中,您可以在 web worker 中运行整个应用程序。这意味着您必须通过渲染器接口与浏览器进行通信。似乎无法从该界面停止冒泡。

奇怪的是,他们在 alpha.xxx 中删除了 (^click) 语法,这意味着事件仅使用 ^ 冒泡,而没有 ^ 所有事件默认情况下都不会冒泡......但它只是被删除并没有更改为反之。

还想知道 angular material 是否会支持 web worker,因为他们的代码中有 event.stopPropagation ...

【问题讨论】:

更新了 angular2 的标题,因为它可能是特定于它的,因为事件被序列化了。 嗯? WebWorkers中有点击事件吗?他们来自哪里? 来自框架的 ui 部分。 github.com/angular/angular/blob/master/modules/angular2/src/… 那么显然你不能从不同的线程取消本机事件。除非 Angular 使用事件来引发事件,否则您只能从 WebWorker 中读取事件。很可能,当您通过onMessage 收到它时,该事件已经冒泡了。您正在使用 WebWorkers,但您希望一切都是同步的? 是的,明白,但我仍然不希望点击进一步到达父级。希望这并不意味着一切都是同步的...... 【参考方案1】:

该特定类型的事件不会冒泡,因此它没有stopPropagation API。根据 MDN 文档:

事件不会冒泡并且可以取消;为了防止默认动作发生,worker可以调用error事件的preventDefault()方法。

有关更多信息,请参阅“处理错误”部分的 here。

【讨论】:

但是点击应该传播,我用从事件中得到的对象更新了问题。

以上是关于angular2 web worker中的停止事件的主要内容,如果未能解决你的问题,请参考以下文章

Nginx实用教程:启动停止重载配置

Web Worker 多线程

进程,线程,Event Loop(事件循环),Web Worker

service-worker 可以停止 GCM api 发送的推送通知吗?

Web Worker

Web Workers