// 保存端口引用 let port /** * 控制处理各种消息 * @type {Map } */ const handle = new Map() handle.set('layout', false) /** * 接收来自主页面的初始化消息 * @param e {MessageEvent} */ self.onmessage = function initHandler(e) { const {ports = [], data} = e // console.log(`Worker收到消息:`, data) // 只处理初始化消息 if (data !== 'init-worker' || ports.length === 0) { return } // console.log(`Worker初始化,接收到端口:`, ports[0]) self.port = ports[0] self.port.onmessage = messageHandler // 初始化完成后,可以移除主消息监听器,改为只监听端口消息 self.onmessage = null } /** * 父节点事件配置 * @param event {MessageEvent} */ function messageHandler(event) { // console.log('has been received event',event) if (handle.has(event.data.type)){ self.port.postMessage(handle.get(event.data.type)) } }