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

2 回目の試行でほぼ正解です。my_f呼び出しをコールバック関数内に移動するのは正しいです。

ただし、外側のスコープからmy_fオリジナルを「シャドウ」するコールバックで呼び出される引数を宣言しました。1 つの引数のみがそのコールバック (名前を付けた) に渡されるmy_fため、他の引数には値が割り当てられます。したがって、コールバック内の変数は.chrome.storage.local.getresultundefinedmy_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 に答える