Javascriptでこのようなことが可能かどうか疑問に思っています。
var Module = function(){
var _ajaxLoaded = false;
var _property = null;
return {
init : function(){
// starting ajax request here
$.getJSON('requesturl', function(data) {
_property = data.property;
_ajaxLoaded = true;
});
},
property : function(){
if(_ajaxLoaded){
return _property;
}
// stop processing here and wait till ajax request is finished
// loop till ajax is finished
return this.property();
}
}
}();
Module.init();
alert(Module.property());
init 関数にコールバックがあり、それを待つことが可能であることを私は知っています。しかし、この例では、プロパティが存在するかどうかを知らずにプロパティを要求することができます。
- 編集 -
init 関数でコールバックを使用する必要があると確信しています。それは単により良いコーディング構造です。でも、他に可能性がなかったら、それが可能かどうか本当に疑問に思っています。次の行を追加しました:
// loop till ajax is finished
return this.property();
Javascriptにはajax呼び出し(シングルスレッド?)を処理する時間さえないため、これは何とか機能しますか?それとも無限ループに陥りますか? まだテストしていません。
間違いなく、それは悪いコーディングであり、私は使用しませんが、ただ興味があります.