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()が実行される前に外側の関数が返されます。

これは非同期プログラミングの性質であり、このケースを処理するには、Promise やjQuery の遅延オブジェクト( Promises/A仕様の部分的な実装)に慣れる必要があります。

これはPromisesの素晴らしい紹介であり、ここには別の紹介があります

于 2013-11-04T23:18:03.810 に答える