0

我只是想知道在 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调用(单线程?)而导致无限循环?还没有测试它。

毫无疑问,这是糟糕的编码,我不会使用它,但我只是好奇。

4

0 回答 0