我正在开发Chrome扩展程序。我有一个从Local Storage检索JOSN字符串并返回它的函数。
它无法正常工作,这是我的代码。
function getstore()
{
var all = {};
chrome.extension.sendRequest({method: "getlist", key: "" }, function(response) {
all = JSON.parse(response.data);
console.log(all); //it prints the JSON properly
return all; //
});
}
但每当我调用这样的函数时:
var old_a = getstore();// old_a should hold the JSON returned by getstore()
console.log(old_a);
但是这里“old_a”的值正在变得不确定。
答案 0 :(得分:1)
实际上,您没有从方法getstore()
返回任何内容。
sendRequest方法有一个在异步函数完成时调用的回调函数。方法签名如下所示:
chrome.extension.sendRequest(options, responseCallback)
所以responseCallback是你添加的最后一个参数。
function(response) {
all = JSON.parse(response.data);
console.log(all); //it prints the JSON properly
return all; // No sense in returning from a callback method, it will do nothing and will never be catched anywhere.
}
所以你想要做的是:
function getstore()
{
chrome.extension.sendRequest({method: "getlist", key: "" }, function(response) {
var old_a = JSON.parse(response.data);
// Use the json object here.
console.log(old_a);
});
}