0
ローディングインジケーターが遅れて、APIからデータを取得するたびに点滅したりちらついたりしないようにするエフェクトの作成を試しています。これは、画面にそのようなインジケータを投げる前にAPIを300〜500ミリ秒で応答させたい唯一の人にはなり得ないと確信しているため、何を検索するのかわからない場合があります。@ ngrx/effectsでローディングインジケーターディレイを作成する
@Effect() startDelayTimer: Observable<Action> = this.actions$
.ofType(uiActions.START_LOADING_DELAY_TIMER)
.switchMap(action => Observable
.timer(300)
.mapTo(new uiActions.LoadingDelayTimerCompleteAction));
この効果が途絶えることはありますか?私はすべてのアクションと状態のペアをコンソールに記録していますが、START_LOADING_DELAY_TIMERは呼び出されていますが、完了は決してありません。
編集
私が持っていた問題は関係のないことになったので、この質問は、時期尚早に頼まれました。
@Effect() startDelayTimer: Observable<Action> = this.actions$
.ofType(uiActions.START_LOADING_DELAY_TIMER)
.switchMap(action => Observable
.timer(5000)
.takeUntil(this.actions$.ofType(uiActions.CANCEL_LOADING_DELAY_TIMER))
.mapTo(new uiActions.LoadingDelayTimerCompleteAction)
)
- スタート(APIからのデータ取得の完了からそう)
- を点滅ロードインジケータを遅らせるためにタイマー
CancelLoadingDelayTimerAction
が派遣されている場合:ここでは他のケース誰における最終的な実装は、この質問findsがあります、タイマーを停止し、ローディングインジケーターを表示しないでください。 CancelLoadingDelayTimerAction
が送信される前にタイマーが完了すると、ローディングインジケータが表示されます。
いただきありがとうございます。残念ながら、私の問題は[完全に関係のない問題](https://github.com/ngrx/effects/issues/132)によって引き起こされました – wolfhoundjesse
また、私はObservable.timer()を使用してキャンセルを支援しています。上記のコードからは明らかではないので、これを他の人にとってより有用な質問にするために更新します。 – wolfhoundjesse