如何检查一个变量是否设置在铬存储

How to check if a variable is set on chrome storage

本文关键字:设置 是否 存储 变量 何检查 检查 一个      更新时间:2023-09-26

我有一个小片段与LocalStorage工作,但我不能使它在Chrome存储方案上工作。

当我的应用程序启动时,我检查一个变量在localStorage

var bookNarration=parseInt(localStorage.getItem("narration"));

如果该变量是未定义的,这意味着我的应用程序是第一次打开,我在使用"default"声明的开关中处理bookLanguage。

switch(window.bookNarration)
  {
    case 2:
        window.narrationShift = window.spanishShift;
    break;
    case 3:
        window.narrationShift = window.frenchShift;
    break;
    case 10:
        window.narrationShift = window.neutralShift;
    break;
    default:
        window.narrationShift = 0; }

为了使它与Chrome存储工作,我改变我的代码如下:

var bookNarration=parseInt(chrome.storage.local.get("narration"));

但是我马上得到这个错误:

表单get(string)的调用与定义get(可选字符串或数组或对象键,函数回调)不匹配

我已经找了好几个小时试图找到一个解决方案,但我不能使它工作。我想我只需要检查值是否已经定义,所以如果它不是,我可以使用set()方法来存储我的默认值。

函数期望一个回调:

chrome.storage.local.get("narration", function(data)
{
    if(chrome.runtime.lastError)
    {
        /* error */
        return;
    }
    var bookNarration = parseInt(data.narration);
    switch(bookNarration)
    {
        /* ... */
    };
});

现在没有必要使用catch(意思是我不知道从接受的答案到现在是否发生了变化)。

如果项目不存在,你可以传入你想要的项目和默认值

chrome.storage.local.get({narration: "", num: 0, books: []}, function(data)
{
    var bookNarration = parseInt(data.narration);
    switch(bookNarration)
    {
        var numBooks= data.books.length
        /* ... */
    };
});