我只是想知道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调用(单线程?)?尚未测试过。
毫无疑问,这是糟糕的编码,我不会使用它,但我只是好奇。