chrome本地存储异步将数据传递给正确的回调

时间:2015-07-03 19:32:46

标签: javascript google-chrome google-chrome-extension

function func(data) {
    var data2 = {'apple', 'pear'};

    chrome.storage.local.get("key", function(items) {
        // Lots of code here that takes time.
        // use "data"
        // use "data2"
    }
}

1)如何在此回调中使用“data”和“data2”?我只是不确定如何正确地将这些数据传递给回调。我是否创建了全局?

2)好像我可以使用它们,但是根据我的理解,它是异步的,我担心func()会在调用回调之前结束,并且到那时数据和data2都将超出范围,使它们无法使用。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您将通过名为Closure Scope的内容保留对datadata2变量的访问权限。

你不必做任何不同的事情。只需使用正常的变量。

答案 1 :(得分:0)

你只需使用它们。

通过在回调中引用它们,您可以创建closure,因此它们将在func执行完毕后继续存在,直到没有对它们的引用为止。

但是,确保在回调执行之前不要更改它们非常重要。在你的情况下,它不是一个问题,但如果它们来自外部范围,你需要牢记这一点。