我有一个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
}
答案 0 :(得分:0)
不确定你的上下文是什么...我遇到一个问题,浏览器端的Web Audio API事件循环在不合时宜的时刻被来自我的nodejs服务器的WebSocket流量中断,所以我添加了一个WebWorker中间层来免费浏览器事件循环不会中断
WebWorker处理了所有网络流量,然后用数据填充了一个循环队列...当浏览器事件循环认为自己可用时,它从这个共享队列中获取数据(使用Transferable Object缓冲区),因此它从未中断过,因为它是一个启动对WebWorker的调用
我感觉到你的痛苦然而这种方法使事件循环保持开心...因为WebWorker实际上是在自己的线程上而且从浏览器端进行异步工作,所以不需要最小化异步代码