如何调用chrome.storage.sync.get并在页面加载时分配变量
How do I call chrome.storage.sync.get and assign variables on page load?
如果设置为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");
相关文章:
- 将Json作为变量加载到jsTree中
- 重新加载页面时Javascript变量发生变化
- 在ES6中加载SASS变量
- 通过加载函数发送一个变量
- Javascript - 加载函数运行时未定义的变量
- 如何加载一次模型并将其存储到变量中
- 浏览器's将AngularJS变量加载为URL
- 使用Jquery在页面加载上测试php会话变量
- javascript中未完全加载变量
- Javascript - 如何从文件加载变量并每 3 秒刷新一次
- 在不同的 Require.js 模块中存储和加载变量
- 保存和加载变量
- Jquery javascript加载变量作用域
- 尝试加载变量到Angular指令
- 从URL加载变量,仅适用于数字
- jQuery加载变量而不是元素id
- 从URL加载变量
- 为什么ng repeat不加载变量
- 在JSP页面中重新加载变量
- 通过AJAX / PHP提交URL设置变量不刷新页面,加载变量