私はスピナーを持っています。スピナーが表示されるまで 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});
}
});
エフェクトに返されるタイマーをキャンセルする方法を誰かが教えてくれるでしょうか。