2012-01-04 14 views
0

私はコンテンツのスクリプトでChromeの拡張機能localStorageを読んでいます。変数をコンソールに記録すると、すべて正常に動作します。私はそれを警告したい場合、変数は未定義であると言います。変数を返す - 未定義

var data666; 

chrome.extension.sendRequest({method: "getLocalStorage", key: "autoplay"}, function(response) { 
    console.log(response.data); // works perfectly 
    data666 = response.data; 
}); 

alert(data666); // does not work 

EDIT:私は非同期関数外の変数(この場合はdata666)を使用する必要があります。

+0

必要な機能を関数内に入れて、その関数をコールバックから呼び出します。 –

答えて

3

sendRequestは非同期関数であり、sendRequestがコールバック関数を実行するまでデータの値は設定されません。

したがって、アラートステートメントをコールバック関数に移動する必要があります。

chrome.extension.sendRequest({method: "getLocalStorage", key: "autoplay"}, function(response) { 
    console.log(response.data); // works perfectly 
    data666 = response.data; 
    alert(data666); 
}); 
+0

ありがとうございます。私はすでにそれをトリッジしていますが、私は関数の外で変数を使う必要があります。 –

+0

いいえ、私はあなたがコールバック関数内で次のプロシージャをラップする必要があると思います。 – qiao

+0

ありがとうございます。コードが面倒で醜いように見えても、それを行うことができます... –