叫我一个菜鸟,但我似乎无法让这个工作:
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
}
知道为什么吗?
答案 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);