奇怪的 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 之后调用 mainref 仍将是未定义的,因为分配此变量的回调仍未执行。

为防止您需要在 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]"; 
}