mixiアプリの作成について質問です。

mixiアプリに限らずjavascriptを利用したwebプログラムには共通の事だと思いますが
下記のようなプログラムを書いたとき、想定した結果を得られません。

<script type="text/javascript">
var name_from_getname;//グローバル変数
function getname() {
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), "viewer");
req.send(function(data) {
var viewer = data.get("viewer").getData();
name_from_getname = viewer.getDisplayName();
alert(name_from_getname + ":alert from getname");
});
}

function init(){
getname();
alert(name_from_getname);
}

gadgets.util.registerOnLoadHandler(init);
</script>

init()からgetname()を呼び出し、この中でグローバル変数name_from_getnameにユーザ名を代入します。
この処理が終わったらalertでユーザ名を出力するのですが、実行すると、

"undefind"
"ユーザ名:alert from getname"

の順番にアラートが表示されます。
つまりgetname()の文法は間違っておらず、処理される順番が入れ違ってしまっているという事です。
本件の原因と対処法をご存知の方、ご教示下さい。
できればinit()の中身をいじらずに対応できると嬉しいです。
また、ソースを記載していただくと助かります。

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

みんなの回答

この質問へのコメント

コメントはありません

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2011-03-29 23:02:26
終了日時
2011-04-05 23:05:02
回答条件
1人1回まで

この質問のカテゴリ

この質問に含まれるキーワード

OpenSocial8mixiアプリ42グローバル変数16JavaScript2781プログラム5048

人気の質問

メニュー

PC版