从Custom方法返回chrome.storage.sync项

时间:2016-01-01 14:30:57

标签: javascript google-chrome google-chrome-extension key storage

我正在尝试使用chrome.storage.sync制作Chrome扩展程序,使用以下对象:

var storage = {
  "area":chrome.storage.sync,

  "get":function(key){

    var result = true,
      callback = function(items){
        result = items[key];
      };

    this.area.get(key,callback);

    return result;
  },

  "set":function(key,value){
    //create an empty object for a key:value pair
    var object = {};

    object[key] = value;

    console.log(object);

    this.area.set(object,function(){
     console.log(object);
    });

  }
};

但是“get”方法永远不会返回结果。它在此示例中仅返回“true”。为什么我不能获得项目的实际值,将其存储在结果中并返回? Chrome是否需要时间来获取密钥:值对?如果是这样,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

由于chrome.storage操作是异步的,因此在调用get方法时应该传递回调函数。

var storage = {
  "area":chrome.storage.sync,

  "get":function(key, callback){    
    this.area.get(key,callback);
  },

  "set":function(key,value){
    //create an empty object for a key:value pair
    var object = {};

    object[key] = value;

    console.log(object);

    this.area.set(object,function(){
     console.log(object);
    });

  }
};

用以下方式调用:

var callback = function(items) {
    // get your object from chrome.storage here
    // and perform your actions.
    console.log(items);
}
storage.get(key, callback);