网络工作者只是停止,没有错误或任何东西。代码完全是确定性的,但它会在代码中的不同点消失。
编辑:问题是我没有维护对我的工人的引用,所以当他们被垃圾收集时,他们似乎随机死亡。
网络工作者只是停止,没有错误或任何东西。代码完全是确定性的,但它会在代码中的不同点消失。
编辑:问题是我没有维护对我的工人的引用,所以当他们被垃圾收集时,他们似乎随机死亡。
我在 Firefox 中发现了类似的情况,在随机数次调用 postMessage 后,我的工作人员似乎默默地失败了。经过更多的挖掘,我发现了真正的问题。显然,在 Firebug 中调用工人是问题所在。Firebug 正在触及 Firefox 的 chrome JS(特权代码空间)中的一项服务,该服务导致 worker 间歇性失败,您可以在此处查看它的补丁: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...
}