Javascript - 手动更新Web工作者消息

时间:2017-11-02 15:55:46

标签: javascript javascript-events web-worker

我有一个Web工作者,我试图以尽可能少的异步代码运行。

我希望在我的网络工作者中有一个while循环,同时仍然允许处理消息。有没有办法在浏览器中手动更新事件系统?或者至少更新网络工作者的消息?

在Node.js(process._tickDomainCallback())中似乎有这样的东西,但到目前为止我还没有找到任何网页。

使用setTimeout不是一个选项。我想要一个解决方案或一个明确的答案,这根本不可能。

谢谢!

// worker.js

self.onmessage = function(e) {
   console.log("Receive Message");
};

while (true) {
  UpdateMessages(); // Receive and handle incoming messages

  // Do other stuff
}

1 个答案:

答案 0 :(得分:0)

不确定你的上下文是什么...我遇到一个问题,浏览器端的Web Audio API事件循环在不合时宜的时刻被来自我的nodejs服务器的WebSocket流量中断,所以我添加了一个WebWorker中间层来免费浏览器事件循环不会中断

WebWorker处理了所有网络流量,然后用数据填充了一个循环队列...当浏览器事件循环认为自己可用时,它从这个共享队列中获取数据(使用Transferable Object缓冲区),因此它从未中断过,因为它是一个启动对WebWorker的调用

我感觉到你的痛苦然而这种方法使事件循环保持开心...因为WebWorker实际上是在自己的线程上而且从浏览器端进行异步工作,所以不需要最小化异步代码