我正在尝试使用以下代码在 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");
问题是 keyValue 总是“未定义”,即使我在尝试读回值时延迟了 1 秒。我知道这是因为“chrome.storage.local.get”函数是异步的。以下代码可以正常工作。
Chrome_setValue("City", "London");
chrome.storage.local.get("City", function (result) {
alert(result["City"]);
});
绑定keyValue(使用)时有什么办法get
可以强制代码等待函数返回响应?或者也许我从错误的角度来处理这个问题。本质上,我正在寻找一种方法可以抽象出chrome.storage 框架中处理数据的方法set
?get
理想情况下,我可以调用两个简单的函数来设置和检索名称值对。
在我使用非常简单的 localStorage 之前。
//Set
localStorage["City"] = "London";
//Get
var keyValue = localStorage["City"];