【问题标题】:javascript singleton with promise带有承诺的javascript单例
【发布时间】:2013-11-04 23:04:13
【问题描述】:

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

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 时,它会等待 fetch 回来吗?

【问题讨论】:

    标签: javascript backbone.js singleton promise


    【解决方案1】:

    简短的回答是否定的。获取是异步发生的,因此外部函数将在传递给A.fetch() 的回调函数执行之前返回。

    这是异步编程的本质,您需要熟悉 Promise 和/或jQuery's deferred object(这是Promises/A 规范的部分实现)来处理这种情况。

    这是对Promiseshere's another的一个很好的介绍

    【讨论】:

    • 所以当我们调用 current 时它只会返回“null”?
    • null 或在传入fetch 调用的回调执行后分配给它的值。
    • 所以这意味着用户将看到 null 并且一旦 fetch 从服务器返回,即使函数已经返回,它也会秘密地成为新值?
    猜你喜欢
    • 2016-04-02
    • 2017-10-04
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多