Google chrome extension chrome扩展:获取存储值并传递给另一个函数

Google chrome extension chrome扩展:获取存储值并传递给另一个函数,google-chrome-extension,Google Chrome Extension,我使用Chrome.storage.local.get()从Chrome存储中获取一个值。我需要能够在函数中使用这个值 我真正想做的是在get函数之外访问_userid,但这不起作用: function my_f(userid){ alert("I'm called"); } var the_userid; chrome.storage.local.get('userid', function (result) { the_userid = userid.result; } m

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

我真正想做的是在get函数之外访问_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\u 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);
 }
但我的f不叫


怎么办?

在第二次尝试中,你几乎做到了。将调用移动到回调函数中的
my\u f
是正确的

但是,您在回调中声明了一个名为
my_f
的参数,该参数从外部范围“隐藏”原始
my_f
。由于
chrome.storage.local.get
只将一个参数传递给其回调函数(您已将其命名为
result
),因此其他参数都被赋值为
未定义的
。因此,变量
my_f
undefined
的回调中

相反,只需删除
my\u f
参数:

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

然后回调中的变量
my\u f
将引用在外部范围中定义的
my\u f
函数。

在清单中?我已经做到了。我可以得到userid的值。我哪儿都不能用!