次のコードを使用して、Chrome 拡張機能で名前と値のペアを設定および取得しようとしています。
if (!this.Chrome_getValue || (this.Chrome_getValue.toString && this.Chrome_getValue.toString().indexOf("not supported") > -1)) {
this.Chrome_getValue = function (key, def) {
chrome.storage.local.get(key, function (result) {
return result[key];
});
};
this.Chrome_setValue = function (key, value) {
var obj = {};
obj[key] = value;
return chrome.storage.local.set(obj)
}
}
次に、これらを次のように呼び出します。
Chrome_setValue("City", "London");
var keyValue = Chrome_getValue("City");
問題は、値を読み戻そうとするのに1秒の遅延を置いても、keyValueが常に「未定義」であることです。これは、「chrome.storage.local.get」関数が非同期であるためだと理解しています..次のコードは正常に動作します。
Chrome_setValue("City", "London");
chrome.storage.local.get("City", function (result) {
alert(result["City"]);
});
(を使用して) keyValue をバインドするときget
に、関数が応答を返すまでコードを強制的に待機させる方法はありますか? あるいは、間違った角度からアプローチしているのかもしれません。基本的に、chrome.storage フレームワーク内でデータを処理するためのset
およびメソッドを抽象化できる方法を探していますか? get
理想的には、名前と値のペアを設定および取得するために呼び出すことができる 2 つの単純な関数です。
私が localStorage を使用する前は、非常に簡単でした。
//Set
localStorage["City"] = "London";
//Get
var keyValue = localStorage["City"];