アプリ版:「スタンプのみでお礼する」機能のリリースについて

Javascriptで関数関係なしに処理した値を引き継ぎたいのですが
可能でしょうか?

例:
test = 0; //引き継ぎたい変数
function hoge(){
//処理
 a = function(){
//処理
test = 1;
 }
}
hoge;

alert(test); //「1」にしたい(関数内で処理した値を保持したい)

A 回答 (3件)

じっさい非同期処理でデータを受けた後に処理をしたいのであれば



xmlHttpRequest.onreadystatechange = function(){
if((xmlHttpRequest.readyState == 4 ) && ( xmlHttpRequest.status == 200 )){
test = 1;
}
}

のような処理になると思います。
もちろん非同期なのでalertをかけたタイミングで想定のデータが取れるとは
限りません。
    • good
    • 0
この回答へのお礼

タイミング次第ってことですよね。。
そもそも自作の非同期処理でAPIの取得内容によって、ページの内容を変えたり、他のJavascript(ブログパーツ等)を呼び出すことは難しそうですね。。
熱心にご回答頂きありがとうござました。

お礼日時:2012/04/19 20:57

>xmlHttpRequest.open( 'GET', requestUrl,true);



requestUrlの指定がどうなっているのでしょうか?
たとえばlocation.hrefを指定してあげて、
hoge()を実行すればいけるかもしれません

<script>
test = 0;
function hoge(){
var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.onreadystatechange = function(){
test = 1;
}
xmlHttpRequest.open( 'GET', location.href,true);
xmlHttpRequest.send( null );
}
hoge();
document.write(test);
</script>

この回答への補足

度々回答頂きましてありがとうございます

requestUrlは外部APIのリクエストURLとなります。
こちらの関数内で、APIのレスポンスデータから判定してtestに1を代入したいと考えています。

補足日時:2012/04/19 11:38
    • good
    • 0

ユーザー関数hoge()内の無名関数でグローバル変数を書きかえるんですよね?


無名関数を実行しないとどうしようもないかと?

aがローカルでしょりされるならこう

<script>
test = 0;
function hoge(){
var a = function(){
test = 1;
}
a();
}
hoge();
document.write(test);
</script>

aがグルーバルで処理されるならこう?
<script>
test = 0;
function hoge(){
a = function(){
test = 1;
}
}
hoge();
a();
document.write(test);
</script>

この回答への補足

分かり辛い質問にご回答頂きありがとうございます。
下記の場合は可能でしょうか?

例2:
test = 0; //引き継ぎたい変数
function hoge(){
//処理
 var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.onreadystatechange = function(){
//処理
test = 1;
 }
xmlHttpRequest.open( 'GET', requestUrl,true);
xmlHttpRequest.send( null );
}
hoge;
document.write(test);

補足日時:2012/04/18 17:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!