0

我正在构建一个 Chrome 扩展程序,并编写了这段代码。

我希望它在我调用 options.getMode() 时打印 'Object {value: "set up"}'。但是,它打印“未定义”。

var Options = function(){};

Options.prototype = {

    getMode: function(){

            chrome.storage.sync.get('value', function(e){         
               console.log(e); // it prints 'Object {value: "set up"}' in console.
               return e;
             })
    }
}


var options = new Options();

console.log(options.getMode()); // it prints "undefined" in console.

chrome.storage.sync.get() 的第二个参数是一个回调函数。我想知道回调函数是否不返回对象(e)。

我希望它在调用 options.getMode() 时打印出“未定义”。

这段代码有什么问题?

请帮帮我!

我想我误解了一些非常基本的东西。

谢谢!!

4

2 回答 2

0

尝试这个,

 return chrome.storage.sync.get('value', function(e){         
      console.log(e); // it prints 'Object {value: "set up"}' in console.
      return e;
 });

完整代码

var Options = function(){};
Options.prototype = {
    getMode: function(){
               return chrome.storage.sync.get('value', function(e){         
                 console.log(e);
                 return e;
               });
    }
}

var options = new Options();
console.log(options.getMode());
于 2013-09-09T09:58:26.890 回答
0

Storage.get 是异步的。

所以你的代码应该是这样的:

var Options = function(){};

Options.prototype = {

    getMode: function(callback){

            chrome.storage.sync.get('value', function(e){
               //this function is executed somewhere in the future        
               callback(e);
             })
    }
}


var options = new Options();
options.getMode(function(mode){
    //do some stuff with mode here   
    console.log("Mode is", mode);
});
于 2013-09-14T14:34:35.737 回答