我在後臺爬行大約20個網站,當頁面加載時,在頁面工作者的插件腳本。不幸的是瀏覽器在此期間凍結,無法預知。firefox addon sdk頁面工作者塊主線程
我試圖用timers.setTimeout(...,0-400ms),並還試圖從維基
function executeSoon(aFunc) {
var tm = Cc["@mozilla.org/thread-manager;1"]
.getService(Ci.nsIThreadManager);
tm.mainThread.dispatch({
run: function() {
aFunc();
}
}, Ci.nsIThread.DISPATCH_NORMAL);
}
的例子,但是這也凍結UI。還有其他解決方案嗎?
抓取代碼:
...
timer.setTimeout(function() {
let pageWorker = require("sdk/page-worker").Page({
contentScriptFile: self.data.url("js/extractor.js"),
contentURL: url
});
pageWorker.port.on("loaded", function (content) {
if (typeof callback === 'function') {
callback(content);
}
});
}, 200)
...
的extractor.js,即使在簡單的情況下,當它返回body.textContent,阻塞。
如果您發佈我們可以幫助您,您嘗試運行的抓取代碼是什麼。 – Noitidart 2014-11-24 04:32:37
@Noitidart我加了代碼,沒什麼特別的。 – Sam 2014-11-24 04:46:19
js/extractor.js中有什麼?這是鎖定它的代碼,你在那裏的代碼不會鎖定任何東西。 – Noitidart 2014-11-24 15:56:29