0

我使用 chrome.storage.local.get() 从 Chrome 存储中获取值。我需要能够在函数中使用这个值。

我真正想做的是在 get 函数之外访问 the_userid ,但这不起作用:

function my_f(userid){
  alert("I'm called");
}

var the_userid;
chrome.storage.local.get('userid', function (result) {
    the_userid = userid.result;
 }

my_f(the_user_id);

所以我认为传递函数 my_f 会起作用:

function my_f(userid){
  alert("I'm called");
}

chrome.storage.local.get('userid', function (result, my_f) {
    var the_userid = userid.result;
    my_f(the_user_id);
 }

但是 my_f 没有被调用。

该怎么办?

4

1 回答 1

1

在您的第二次尝试中,您几乎做到了。您将调用移动到my_f回调函数内部是正确的。

但是,您已经声明了一个在回调中调用的参数,该参数从外部范围my_f“遮蔽”了原始内容。my_f由于chrome.storage.local.get只将一个参数传递给其回调(您已将其命名为result),因此为其他参数分配了 value undefined。因此,您的回调中的变量my_fundefined.

相反,只需删除my_f参数:

chrome.storage.local.get('userid', function (result) {
    var the_userid = userid.result;
    my_f(the_user_id);
}

然后my_f回调中的变量将引用my_f外部范围中定义的函数。

于 2013-04-23T13:35:58.493 回答