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

时间:2016-01-12 22:15:11

标签: javascript google-chrome-extension

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

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

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

但页面加载时权限始终等于true。如果我调用另一个函数来打印权限值,那么直到之后才会调用它。

我调用此函数以及使用

加载页面部分的函数
document.addEventListener('DOMContentLoaded', function () {

我认为问题是该功能未及时调用,但我不知道如何解决此问题。

1 个答案:

答案 0 :(得分:6)

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

要解决此问题,建议您使用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);
});