查询本地存储条目而不会抛出错误

时间:2016-07-17 15:39:59

标签: javascript google-chrome variables google-chrome-extension local-storage

使用Chrome扩展程序。我使用以下内容将一些数据保存到本地存储:

chrome.storage.local.set({ [variablyNamedEntry]: someObjectToBeSaved });

在我的代码的其他地方,我想查询如果条目存在,如果存在,我会想要使用该对象本地变量“myVar”。

如果条目存在,此代码可以实现我的目标:

chrome.storage.local.get(null, function(result){
    myVar = result[variablyNamedEntry];
}

但是如果“variablyNamedEntry”没有条目,则会抛出错误。我可以用try / catch序列来管理这个错误。但这不是最好的方法,因为我知道它不会在很大比例的时间内找到该条目。

我如何实现目标?

更新

我尝试使用:

chrome.storage.local.get([variablyNamedEntry], function(result){
    if (result != undefined)
        myVar = result[variablyNamedEntry];
}

但如果条目不存在,我仍然会收到以下错误:

 extensions::uncaught_exception_handler:8 Error in response to storage.get: TypeError: Cannot read property 'someProperty' of undefined

1 个答案:

答案 0 :(得分:2)

请注意the items parameter for the callback of chrome.storage.local.get is always an object,永远不会undefined

假设您有一个键值为'Sample-Key'的键值,您可以使用以下代码

chrome.storage.local.get(null, function(result){
    if(typeof result['Sample-Key'] !== 'undefined') {
        console.log(result['Sample-Key']);
    }
});

或者

chrome.storage.local.get('Sample-Key', function(result){
    if(typeof result['Sample-Key'] !== 'undefined') {
        console.log(result['Sample-Key']);
    }
});