0

我想知道我是否有这样的单例对象

var A = require("js/A");
var singleton = {
    obj : null,

    current: function() {
          if(!this.obj){
             this.fetch();
          }
          return this.obj;
    },
    fetch: function() {
          A.fetch().then(function(result){
             this.obj = result;
          });
    }
}

那么它是否等待我们的时候获取回来return this.obj

4

1 回答 1

1

最简洁的答案是不。获取是异步发生的,因此外部函数将在传入的回调函数A.fetch()执行之前返回。

这是异步编程的本质,您需要熟悉 Promises 和/或jQuery 的延迟对象(它是Promises/A规范的部分实现)来处理这种情况。

这是对Promises的一个很好的介绍,这是另一个

于 2013-11-04T23:18:03.810 回答