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

use*_*347 2 javascript google-chrome-extension

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

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

var permission = true;
chrome.storage.sync.get({ 
    history: true
}, function(items) {
    permission = items.history;
});
Run Code Online (Sandbox Code Playgroud)

但是当页面加载时,权限总是等于true.如果我调用另一个函数来打印权限值,则直到之后才会调用.

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

document.addEventListener('DOMContentLoaded', function () {
Run Code Online (Sandbox Code Playgroud)

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

Gra*_*nga 7

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

要解决这个问题,我建议使用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);
});
Run Code Online (Sandbox Code Playgroud)