我只是想知道在 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调用(单线程?)而导致无限循环?还没有测试它。
毫无疑问,这是糟糕的编码,我不会使用它,但我只是好奇。