将邮件从SharedWorker发送到SharedWorker

无情

关于SharedWorkersMDN文档指出:

SharedWorker界面代表一种特定类型的工作程序,可以从多个浏览上下文(例如,多个窗口,iframe甚至什至是worker)访问该工作程序

对我来说,听起来好像SharedWorkers应该能够直接交换消息。但是,如果我尝试从另一个SharedWorker内部访问SharedWorker,即使用

var worker = new SharedWorker("path/to/file.js");

我懂了

ReferenceError:未定义SharedWorker

我只是误读了文档,还是有另一种方式来做到这一点?

米哈尔·查雷姆扎(Michal Charemza)

尽管您似乎无法从共享工作器创建共享工作器,但是您可以通过在主线程中创建它们,并将一个MessagePort对象传递给另一个对象来在它们之间进行通信请注意,您必须将端口包括在传输列表参数中postMessage:不能复制。

例如,在主线程中创建工作程序,并将其中一个的端口发送给另一个:

var myWorker1 = new SharedWorker("worker1.js");
myWorker1.port.start();

var myWorker2 = new SharedWorker("worker2.js");
myWorker2.port.start();

myWorker2.port.postMessage({worker1Port: myWorker1.port}, [myWorker1.port]);

在第一个工作进程中,您可以在端口上发送消息:

self.onconnect = function(e) {
  var port = e.ports[0];

  self.setInterval(function() {
    port.postMessage('sent from worker 1');
  }, 1000);
};

然后在第二个工作线程中,您可以保存传入的端口对象,并响应在其上收到的消息。

self.onconnect = function(e) {
  var port = e.ports[0];

  port.onmessage = function(e) {
    var worker1Port = e.data.worker1Port;
    worker1Port.onmessage = function(e) {
      console.log('received in worker 2', e.data);
    };
  };
};

您可以在http://plnkr.co/edit/XTOej1b1PHfWuC9LHeZc?p=preview中看到此方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从SharedWorker向SharedWorker发送消息

来自分类Dev

XPage:将邮件发送到邮件列表

来自分类Dev

scrapy:将日志发送到电子邮件

来自分类Dev

mailR:将邮件从闪亮发送到多个地址

来自分类Dev

将邮件发送到收件人的数组列表

来自分类Dev

将表格数据发送到电子邮件

来自分类Dev

将表格数据发送到电子邮件

来自分类Dev

将富文本发送到电子邮件

来自分类Dev

将codeigniter mssql查询结果发送到邮件

来自分类Dev

在UNIX上设置邮件,以将日志发送到gmail

来自分类Dev

禁止将电子邮件发送到root @ domain

来自分类Dev

将邮件发送到外部服务器?

来自分类Dev

将邮件发送到收件人的数组列表

来自分类Dev

将表单发送到Webmatrix中的电子邮件

来自分类Dev

使用python将邮件发送到IP地址

来自分类Dev

scrapy:将日志发送到电子邮件

来自分类Dev

将邮件发送到Gmail地址的Postfix问题

来自分类Dev

将产品列表发送到电子邮件

来自分类Dev

如何将结果javascript发送到php邮件?

来自分类Dev

将电子邮件发送到哪里?

来自分类Dev

将变量发送到电子邮件

来自分类Dev

将复选框值发送到邮件

来自分类Dev

将 Selenium 报告发送到电子邮件

来自分类Dev

将adonis邮件数据发送到边缘视图

来自分类Dev

为什么GitHub将SharedWorker用于WebSocket

来自分类Dev

通过联系表格将邮件发送到电子邮件ID

来自分类Dev

使用Yesod将邮件发送到电子邮件地址

来自分类Dev

用于SMTP的PHPMailer将邮件发送到收件箱,但来自无效的邮件地址

来自分类Dev

将邮件发送到队列中的未注册用户(电子邮件列表)