从 chrome.storage.local.get 加载的实用方法

问题描述 投票:0回答:1

我正在尝试创建一个 JavaScript 方法来从浏览器本地存储加载多个简单设置。

目前我有以下代码可以工作,但加载多个设置很快就会变得不切实际且冗长(我只为本示例提供了 2 个):

const readLocalStorage = async (key) => {
return new Promise((resolve, reject) => {
  chrome.storage.local.get([key], function (result) {
    if (result[key] === undefined) {
      reject();
    } else {
      resolve(result[key]);
    }
  });
});
};

function somefunction(){
    await readLocalStorage('settingsSelfDiscard')
        .then(function(result) {
            if(result == true || result == false){
                selfDiscard = result;
            }
        })
        .catch((err) => {
            //Can't retreive the key, probably non-existent
        });

    await readLocalStorage('settingsCompactToolbar')
        .then(function(result) {
            if(result == true || result == false){
                compactToolbar = result;
            }
        })
        .catch((err) => {
            //Can't retreive the key, probably non-existent
        });
}

我想要一个可以使用的方法,或者与此类似:

selfDiscard = loadLocalStorage("settingsSelfDiscard");
compactToolbar = loadLocalStorage("settingsCompactToolbar");

如果不存在则返回 null。

javascript google-chrome-extension local-storage browser-extension
1个回答
0
投票

由于 API 是异步的,没有

await
then
就无法使用它,但您可以通过向
get
提供数组来在一次调用中获取多个键,请参阅 文档。顺便说一句,ManifestV3 中的 API 已经被承诺:

let {foo, bar} = await chrome.storage.local.get(['foo', 'bar']);
© www.soinside.com 2019 - 2024. All rights reserved.