我正在开发一个使用PyXPCOM运行进程的Firefox扩展。我想在进程启动时显示进度表并向用户提供反馈。
在javascript中我调用了线程管理器来在Python中运行该过程:
var threadManager = Components.classes["@mozilla.org/thread-manager;1"].getService();
var background = threadManager.newThread(0);
background.dispatch(obj, background.DISPATCH_NORMAL);
所以我想知道是否有办法检查线程何时开始工作以及何时完成。这有助于我用javascript控制我的进度表!
如果有人对实施进度表有更好的了解,请告诉我:)
由于
答案 0 :(得分:1)
你不应该直接从JavaScript创建新线程 - 这有很多线程安全问题,据我所知,Firefox 4中不再提供此功能。替换是chrome worker:https://developer.mozilla.org/en/DOM/ChromeWorker。所以你会像这样创建你的工作者:
var worker = new ChromeWorker("script.js");
worker.postMessage(obj);
您还希望接收来自工作人员的消息(例如进度通知)。
worker.onmessage = function(event)
{
if (event.data.type == "progress")
alert("Worker progress: " + event.data.value);
else if (event.data.type == "done")
alert("Worker done!");
}
工作人员本身需要通过postMessage
函数向您发送进度通知,例如:
postMessage({type: "progress", value: done/total*100});