我正在尝试创建一个 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。
由于 API 是异步的,没有
await
或 then
就无法使用它,但您可以通过向 get
提供数组来在一次调用中获取多个键,请参阅 文档。顺便说一句,ManifestV3 中的 API 已经被承诺:
let {foo, bar} = await chrome.storage.local.get(['foo', 'bar']);