有没有办法让Promisify单边消息,如工作者消息或WebSocket消息?

时间:2017-07-19 17:08:45

标签: javascript

有没有办法宣传单方面消息,例如工作者消息或WebSocket消息?

如果可能,我想将套接字消息和工作消息转换为Promises。有没有办法做到这一点? 如:

myWebWorker.postMessage( 'someMessage')。然后()...

也许通过订阅某种类型的公共汽车,或通过使用Observables?似乎Vue.js使用vue-worker可以得到这样的东西。 (https://alligator.io/vuejs/vue-workers/) 他们是如何做到的呢?它仅适用于内联WebWorkers吗?如果我可以使用WebWorker,我想使用外部文件。我希望能够对来自服务器的套接字消息做同样的事情。例如:

socket.sendMessage( 'someMessage')。然后()...

任何想法?

1 个答案:

答案 0 :(得分:0)

使用promise构造函数来解析onmessage回调。

const sendMessage = (socket, message) => new Promise((resolve,reject) => {
  const handleRes = (e) => {
    resolve(e)
    socket.removeEventListener('message', handleRes) 
  }
  const handleRej = (e) => {
    reject(e)
    socket.removeEventListener('error', handleRej)
  }
  socket.addEventListener('message', handleRes)
  socket.addEventListener('error', handleRej)
  socket.send(message)
})