我正在编写一个应用程序,首先将图形的一些空白启动数据实例化到chrome.storage中,因为正在使用扩展程序更新数据。
我现在格式化代码的方式是在代码启动时实例化存储,这是一个问题,因为代码在重新启动chrome时重新开始,因此它会覆盖已写入的所有数据。
所以我想我需要写一些检查功能,我可以写一些像
这样的东西chrome.storage.sync.get("data", function (result){
if ("data" !== null){
initStorage();
} else {
//do stuff
}
})
这是解决此问题的正确方法吗? 我想知道这是否适用于存储功能如何?每个扩展程序是否都有自己的存储区域,因此如果我还没有保存任何内容,那么它将没有任何内容?
答案 0 :(得分:3)
请注意,您可以在get
中提供默认值:
var default_data = { /* something */ };
chrome.storage.sync.get({data: default_data}, function(result) {
// If "data" wasn't present in storage, result.data is a copy of default_data
// Otherwise, result.data is a copy of the actual stored value
chrome.storage.sync.set(result); // To save the default, if not saved
});
答案 1 :(得分:1)
由于您可以从存储中检索多个值,因此result
是一个包含您请求的密钥的对象。检查该对象中是否存在“数据”:
chrome.storage.sync.get("data", function(result) {
if (!("data" in result)) {
initStorage();
}
// Do stuff
});