0

我正在开发一个 chrome 扩展。我有一个从本地存储中检索 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”的值变得未定义。

4

1 回答 1

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); 
    });
}
于 2013-08-16T22:10:57.377 回答