我注意到在禁用自举插件时偶尔会记录错误。
功能关闭:
function shutdown(data, reason) {
forEachOpenWindow(unloadFromWindow);
Services.wm.removeListener(WindowListener);
Components.utils.unload('chrome://myaddon/content/main.jsm');
}
有时,它在禁用插件时出现错误:
NotFoundError: Node was not found main.jsm:112
Components.utils.unload()
是异步的吗?1-是这种情况还是由于其他问题?
2-如果是这种情况,应该如何处理?
3-
Components.utils.unload()
是否可以添加到(正在处理中的)要删除(自身删除)的JSM?4-还有其他建议吗?
更新:
下一个测试:
禁用-没有错误
启用/禁用-1个错误(以上)
启用/禁用-2个错误(以上)
启用/禁用-3个错误(以上)
启用/禁用-4个错误(以上)
启用/禁用-5个错误(以上)
现在很奇怪....
更新2:
我发现了问题... :)
最佳答案
Firefox自举扩展中的Components.utils.unload是否异步?Cu.unload
不是异步的。而且,它可能无法达到您的期望。
它只会指示模块加载器忘记它。其他代码对模块实例的任何引用仍将起作用,即模块实例将一直存在,直到对它的所有其他引用都消失并且可以对其进行垃圾回收为止。
在这方面,unload
似乎有点异步。
3-是否可以将Components.utils.unload()添加到要删除(自身删除)的JSM中(在其中处理)?
是的,模块本身可以Cu.unload
。 Cu.unload
之后的代码仍然可以使用(另请参见我的答案的第一部分)。
关于javascript - Firefox自举扩展中的Components.utils.unload是否异步?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24483344/