4

私はスピナーを持っています。スピナーが表示されるまで x 秒待つ必要があります。ただし、スピナーがタイムアウトの完了を待っている間に REQUEST_DEACTIVATE_SPINNER が呼び出された場合、ACTIVATE_SPINNER アクションの起動を停止する必要があります。別名、アクティブタイマーをキャンセルしたいです。これは私がこれまでに持っているものです。

  @Effect() spinnerActive$ = this.actions$
    .ofType(REQUEST_ACTIVATE_SPINNER, REQUEST_DEACTIVATE_SPINNER)
    .switchMap(action => {
      // create a timer and return it active event sent when timer completes
      if (action.type === REQUEST_ACTIVATE_SPINNER) {
        timer$ = Observable.timer(action.payload.delay || 0)
        .switchMap(() =>
          Observable.of({type: ACTIVATE_SPINNER})
        );
      }

      if (action.type === REQUEST_DEACTIVATE_SPINNER) {
        // check to see if a timer is running if it is cancel it
        if (timer$) {
          // cancel the timer
        }
        return Observable.of({type: DEACTIVATE_SPINNER});
      }
    });

エフェクトに返されるタイマーをキャンセルする方法を誰かが教えてくれるでしょうか。

4

2 に答える 2