所以我一直在和一位同事讨论JavaScript事件循环和Web Workers的使用。在一个单一的Web页时,不同的Web工人具有不同的堆栈,堆,和消息队列,形式here,具体有:JavaScript事件循环和Web Workers
A web worker or a cross-origin iframe has its own stack, heap, and message
queue. Two distinct runtimes can only communicate through sending messages via
the postMessage method. This method adds a message to the other runtime if the
latter listens to message events.
但都是相同的事件循环内执行的消息,或确实每个Web工人具有其自己的事件循环?
我在问这个,因为我在一个页面中有两个Web Workers,一个按顺序执行一个非常计算繁重的操作,而另一个只处理WebRTC连接。 我不会详细讨论,但在我看来,计算量巨大的Web Worker正在从JavaScript事件循环中消除太多的计算时间,以至于其他Worker只需要保持连接活着(通过我想的心跳)无法这样做,连接最终会丢失。
这是我相信的。如果情况并非如此,并且两个Web Workers在不同的事件循环上工作,那么当计算Web Worker上的负载很重(负载轻时连接不会丢失)时,我无法解释为什么连接丢失。
我想到了工人独霸* *机器的可用的处理时间,但它听起来有点很遥远,我不认为这会发生。无论如何,谢谢你的回复和代码! :)我会尝试找到解决方法,以缓慢的工人问题。 – Masiar