Chrome扩展程序sendRequest并返回响应

时间:2013-08-16 21:32:23

标签: google-chrome-extension local-storage

我正在开发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”的值正在变得不确定。

1 个答案:

答案 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); 
    });
}