进度表和XPCOM

时间:2011-05-18 15:30:14

标签: javascript python firefox-addon xpcom

我正在开发一个使用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控制我的进度表!

如果有人对实施进度表有更好的了解,请告诉我:)

由于

1 个答案:

答案 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});