我的JavaScript网络工人在随机的地方默默死了。我该如何调试?
-
22-10-2019 - |
题
网络工作者只是停止,没有任何错误或其他任何内容。该代码完全是确定性的,但是它将死于代码的不同点。
编辑:问题是我没有维持对工人的参考,因此当他们被收集垃圾时,他们似乎随机死亡。
解决方案
问题是我没有维持对工人的参考,因此当他们被收集垃圾时,他们似乎随机死亡。
其他提示
我在Firefox中发现了类似的情况,在随机呼叫后,我的工人似乎默默失败了。经过更多的挖掘,我发现了真正的问题。显然,该工人在火药中的援引是问题。 Firebug正在触摸Firefox的Chrome JS(特权代码空间)中的服务,该服务使工人间歇性地失败,您可以在这里看到该补丁: https://bugzilla.mozilla.org/show_bug.cgi?id=651980
只要您按照工人规格执行所有操作,就不会看到这个问题。至于Firebug/FX的修复,它应在6月下旬到达Firefox 5。希望这对您有帮助!
在这里,网络工作者在Firefox中静静地失败,但在Chrome中没有失败。正在使用Arborjs.org这样称呼:
buildVisualization = function() {
var sys = arbor.ParticleSystem(200, 200, 0.9); // create the system with sensible repulsion/stiffness/friction
sys.parameters({gravity:true}); // use center-gravity to make the graph settle nicely (ymmv)
sys.renderer = Renderer("#viewport"); // our newly created renderer will have its .init() method called shortly by sys...
}
其中Arbor是使用Webworker的对象。
我添加了 window.sys = sys;
线条和现在的魅力在Firefox和Chrome中的魅力。
buildVisualization = function() {
var sys = arbor.ParticleSystem(200, 200, 0.9); // create the system with sensible repulsion/stiffness/friction
window.sys = sys;
sys.parameters({gravity:true}); // use center-gravity to make the graph settle nicely (ymmv)
sys.renderer = Renderer("#viewport"); // our newly created renderer will have its .init() method called shortly by sys...
}
不隶属于 StackOverflow