奇怪的铬存储bug

时间:2015-10-17 12:15:48

标签: javascript google-chrome storage content-script

我有一个奇怪的问题,我注意到当我使用chrome.storage.local.get来显示它们时,内容脚本只使用alert检索值(必须先以某种方式调用它们才能显示)对此的帮助将不胜感激。

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]"; 
}

1 个答案:

答案 0 :(得分:1)

chrome.storage.local.get调用是异步的,这意味着函数立即返回,稍后调用回调。

如果您在main之后致电chrome.storage.local.getref仍然未定义,因为分配此变量的回调仍未执行。

要防止在main变量被分配时需要致电ref 为此,您需要在回调中调用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]"; 
}