如何调用chrome.storage.sync.get并在页面加载时分配变量

How do I call chrome.storage.sync.get and assign variables on page load?

本文关键字:加载 变量 分配 get sync 何调用 调用 storage chrome      更新时间:2023-09-26

如果设置为true,我有一个页面应该只加载特定部分。这些设置可在存储中找到。

但是,在加载页面时,我无法检索这些设置
我尝试过以下几种:

var permission = true;
chrome.storage.sync.get({ 
    history: true
}, function(items) {
    permission = items.history;
});

但是当页面加载时,权限将始终为true。如果我调用另一个函数来打印权限值,则在之后才会调用该函数。

我调用这个函数以及使用加载页面部分的函数

document.addEventListener('DOMContentLoaded', function () {

我认为问题是没有及时调用函数,但我不知道如何解决这个问题。

您的怀疑是正确的。从存储中检索数据后的回调可能会在页面加载后执行。

为了解决这个问题,我建议使用Promise:

var p = new Promise(function (resolve, reject) {
    var permission = true;
    chrome.storage.sync.get({
        history: true
    }, function (items) {
        permission = items.history;
        resolve(permission);
    });
});
p.then(function (permission) {
    loadStuff(permission);
});

async/await重写,但我们仍然必须承诺回调:

async function getFromStorage(key) {
    return new Promise((resolve, reject) => {
        chrome.storage.sync.get(key, resolve);
    })
        .then(result => {
            if (key == null) return result;
            else return result[key];
        });
}
let permission = await getFromStorage("history");