如何从另一个线程向多个线程发送消息?

时间:2019-12-27 19:25:12

标签: javascript worker-thread

我有一个工作人员,它创建MessageChannel并将端口之一发送到主线程

// worker1.js
const { parentPort, MessageChannel } = require('worker_threads');

const { port1, port2 } = new MessageChannel();

port1.on('message', (msg) => {
  console.log(msg);
})

parentPort.postMessage(port2, [port2]);

第二种类型的工作程序只接收MessagePort并将数据发送到端口

// sub_worker.js
const { parentPort, MessageChannel } = require('worker_threads');

parentPort.on('message',  (port) => {
  port.postMessage('some data')
});

主线程代码

// main thread
const { Worker } = require('worker_threads');

const mw = new Worker('worker1.js');
mw.on('message', (port) => {
  for (let i = 0; i < 5; i++) {
    const w = new Worker('sub_worker.js');
    w.postMessage(port, [port]);
  }
})

当我向多个工作人员发送一个频道时,问题是错误的。

错误文字:DataCloneError: MessagePort in transfer list is already detached

0 个答案:

没有答案