Индикатор прогресса и XPCOM - PullRequest
1 голос
/ 18 мая 2011

Я разрабатываю расширение Firefox, которое использует PyXPCOM для запуска процесса. Я хотел бы иметь индикатор прогресса, который отображается при запуске процесса и дает обратную связь пользователю.

В 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 Ответ

1 голос
/ 07 июня 2011

Вы не должны создавать новые потоки из JavaScript напрямую - это связано с множеством проблем с безопасностью потоков, и, насколько я знаю, эта функциональность больше не доступна в Firefox 4. На смену пришли работники Chrome: 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});
...