-1

叫我菜鸟,但我似乎无法让它工作:

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
}

知道为什么吗?

4

2 回答 2

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
});
于 2013-10-19T00:29:26.330 回答
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);
于 2013-10-19T00:52:11.213 回答