Я столкнулся с некоторой проблемой, когда пытался использовать широковещательный канал для связи между основным сценарием и работниками.У меня есть код ниже в основном сценарии:
const channel = new BroadcastChannel('my_bus');
const worker = new Worker('worker.js');
const secondWorker = new Worker('second-worker.js');
channel.postMessage('1000');
и аналогичный код в обоих рабочих:
const bc = new BroadcastChannel('my_bus');
bc.onmessage = () => {
console.log('worker get length');
}
Проблема в том, что сообщение, отправленное из основного сценария, рабочие еще не загруженыпоэтому они пропускают сообщение.Я уверен в этом, потому что, если я делаю что-то подобное, все работает нормально:
setTimeout(() => {
channel.postMessage('1000');
}, 100)
Есть ли способ вызвать обратный вызов после загрузки рабочего скрипта?