Chrome storage.get范围问题

时间:2013-10-19 00:22:45

标签: javascript google-chrome-extension

叫我一个菜鸟,但我似乎无法让这个工作:

var value = ""; // Tried this
function getKey(key) {
  var value = ""; // And this
  chrome.storage.local.get(key, function (data) {
    var value = data[key];
    console.log(value); // This prints the correct value
  });
  console.log(value); // But this will always print null
}

知道为什么吗?

2 个答案:

答案 0 :(得分:3)

chrome.storage.local.get调用是异步的。 getKey函数在执行回调之前返回,因此未设置该值。

为了返回getKey中的值,您需要重新定义,如下所示:

function getKey(key, callback) {
  chrome.storage.local.get(key, function(data) {
    var value = data[key];
    callback(value); // This calls the callback with the correct value
  });
}

您对getKey的来电似乎如此:

getKey("some_key", function(value) {
  // do something with value
});

答案 1 :(得分:0)

这里有2个问题。 (1)范围问题。 (2)异步问题。 试试这个:

// define getKey()
function getKey(key, callback) {
  chrome.storage.local.get(key, function (data) {
    callback(data[key]);
  });
}

// use getKey()
function setDocumentTitle(title) {
  document.title = title;
}

getKey('title', setDocumentTitle);