2013-04-16 66 views
1

我正在開發一個Firefox擴展,需要經常寫入SQLite數據庫(這是爲了一些實驗目的,而不是生產或任何東西)。問題在於寫入數據庫有相當多的開銷,所以我認爲我可以將這部分移到後臺工作,以免中斷瀏覽活動。從Firefox的操作SQLite數據庫插件工作

現在我的問題是,我不能從工人訪問XPCOM組件;即做

Components.utils.import("resource://gre/modules/Services.jsm"); 
Components.utils.import("resource://gre/modules/FileUtils.jsm"); 

從工人不會工作(Components未定義)。

有沒有解決方法?

+0

你如何創建你的員工?如果這些是頁面工作者,您將無法訪問組件對象。 –

+1

@BryanClark我使用[ChromeWorkers](https://developer.mozilla.org/en-US/docs/DOM/ChromeWorker)。 – adrianp

回答

0

查看索引-DB模塊https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/indexed-db.html

var { indexedDB } = require('indexed-db'); 

var request = indexedDB.open('MyDatabase'); 
request.onerror = function(event) { 
    console.log("failure"); 
}; 
request.onsuccess = function(event) { 
    console.log("success"); 
}; 
+0

如果我看一下[這裏](https://developer.mozilla.org/en-US/docs/IndexedDB#Browser_compatibility),似乎這個解決方案與工作人員不兼容。 – adrianp

+0

你不得不從工作者的消息到主線程,indesDB的東西無論如何都是異步的.. – erikvold