奇怪的 chrome 存储错误
Weird chrome storage bug
我有一个奇怪的问题,我注意到内容脚本仅在我使用 alert
显示它们时使用 chrome.storage.local.get
检索值(必须先以某种方式调用它们才能显示它们) 对此的任何帮助将不胜感激。
var ref;
var max;
var min;
var disc;
chrome.storage.local.get([
'ref',
'max',
'min',
'disc'
], function(data){
ref = parseFloat(data.ref);
max = parseFloat(data.max);
min = parseFloat(data.min);
disc = parseFloat(data.disc);
console.log('Values Gotten');
});
function main() {
setTimeout(function(){refresh()},ref*1000);
}
function refresh(){
window.location = "-----some webpage------[its filled in actual code]";
}
chrome.storage.local.get
调用是异步的,这意味着函数 returns 立即调用,稍后调用回调。
如果您在 chrome.storage.local.get
之后调用 main
,ref
仍将是未定义的,因为分配此变量的回调仍未执行。
为防止您需要在 ref
变量分配时调用 main
。
为此,您需要在回调中调用 main
。
var ref;
var max;
var min;
var disc;
chrome.storage.local.get([
'ref',
'max',
'min',
'disc'
], function(data) {
ref = parseFloat(data.ref);
max = parseFloat(data.max);
min = parseFloat(data.min);
disc = parseFloat(data.disc);
console.log('Values Gotten');
main();
});
function main() {
setTimeout(function(){refresh()},ref*1000);
}
function refresh() {
window.location = "-----some webpage------[its filled in actual code]";
}
我有一个奇怪的问题,我注意到内容脚本仅在我使用 alert
显示它们时使用 chrome.storage.local.get
检索值(必须先以某种方式调用它们才能显示它们) 对此的任何帮助将不胜感激。
var ref;
var max;
var min;
var disc;
chrome.storage.local.get([
'ref',
'max',
'min',
'disc'
], function(data){
ref = parseFloat(data.ref);
max = parseFloat(data.max);
min = parseFloat(data.min);
disc = parseFloat(data.disc);
console.log('Values Gotten');
});
function main() {
setTimeout(function(){refresh()},ref*1000);
}
function refresh(){
window.location = "-----some webpage------[its filled in actual code]";
}
chrome.storage.local.get
调用是异步的,这意味着函数 returns 立即调用,稍后调用回调。
如果您在 chrome.storage.local.get
之后调用 main
,ref
仍将是未定义的,因为分配此变量的回调仍未执行。
为防止您需要在 ref
变量分配时调用 main
。
为此,您需要在回调中调用 main
。
var ref;
var max;
var min;
var disc;
chrome.storage.local.get([
'ref',
'max',
'min',
'disc'
], function(data) {
ref = parseFloat(data.ref);
max = parseFloat(data.max);
min = parseFloat(data.min);
disc = parseFloat(data.disc);
console.log('Values Gotten');
main();
});
function main() {
setTimeout(function(){refresh()},ref*1000);
}
function refresh() {
window.location = "-----some webpage------[its filled in actual code]";
}