Chrome.storage.sync.get不在本地变量中存储值

时间:2014-04-20 06:03:02

标签: javascript asynchronous

function getBugVal() {
    var bugVal = "";

    chrome.storage.sync.get('bugId', function (obj) {
        console.log(obj.bugId);
        bugVal = obj.bugId;
        console.log(bugVal + "<- val inside get sync");
    });

    console.log(bugVal + "<- val outside get sync");
    return bugVal;
}

如果我调用getBugVal(),则返回值将始终指示空字符串,而不是chrome.storage.sync.get中的实际值。 bugVal甚至没有保存字符串值。

console.log(bugVal + "<- val inside get sync");

在内部函数调用中产生正确的值。想法?

1 个答案:

答案 0 :(得分:2)

是的。这就是异步代码的工作原理。您必须使用回调。这样的事情可能会奏效。

function workWithBugVal(val) {
    // Do stuff
}

function getBugVal(callback) {
    var bugVal = "";

    chrome.storage.sync.get('bugId', function (obj) {
        console.log(obj.bugId);
        bugVal = obj.bugId;
        callback(bugVal);
    });
}

getBugVal(workWithBugVal);