2

このクラスでは、初期化された bool 状態を使用して Mobx.autorun を実行します。そうしないと、'this' が完全に割り当てられず、エラーが発生します。これを行う別の/よりクリーンな方法はありますか?

class GameMaster{

  private _initialized:boolean = false;
  private _store:IDomainStore;
  private _moveDisposer:Lambda;

  /**
   *
   * @param store - client or server store
   */
    constructor(store:IDomainStore){
        this._store = store;
        console.log(this._store);
        //todo abstract services to decouple client device from GameMaster because it is also used on the server.
        this._moveDisposer = autorun(()=>{
          // prevent firing in the constructor
          if(this._initialized) {
            this.present(
              <IIntent>{
                fromId: 'GeoLocation.service',
                toIds: [Meteor.userId()],
                wish: actions.playerActions.types.CHANGE_PLAYER_GEO_COORDINATES,
                data: [System.GeolocationService.coordinates.lng, System.GeolocationService.coordinates.lat]
            });
          }
        });
        this._initialized = true;
      }

    public present(intent:IIntent):boolean{
      ...
    }
 ...
}

これは別のファイルで私の観測可能です:

 @observable coordinates = {
    lng:0,
    lat:0
  };
4

1 に答える 1