2017-11-28 3 views
0

角度で複数のREST-呼び出しを中止しますその後、次の副作用を誘発:@ ngrx /効果は、私は次のような問題を持っているのApp

@Effect() 
fetchSmallWidgetData: Observable<Action> = this.actions 
    .ofType(fromEnergyManagementActions.FETCH_SMALL_WIDGET_DATA) 
    .map(toPayload) 
    .switchMap(payload => this.dashboardDataService.fetchSmallWidgetData(payload)) 
    .map((data: SmallWidgetData) => new fromEnergyManagementActions.FetchSmallWidgetDataSuccessAction(data)) 
    .catch(error => of(new fromEnergyManagementActions.FetchSmallWidgetDataFailureAction())); 

サービスからのfetchSmallWidgetDataメソッドは、 'new' HttpClientで残りの呼び出しを実行します。ここで

はログです: Browser Logs

だから、問題はngrx /効果は前の呼び出しを中止することを、です。私はそれをタイムアウトでテストしました。タイムアウトが十分に長い場合、すべて成功します。

あなたの提案は何ですか?私が使うことができるベストプラクティスはありますか? あなたの助けをありがとう

+0

'map'と' catch'を 'switchMap'(または' mergeMap')に動かすことを考えてみてください。そのままでは、エラーが発生すると、 'catch'から返されたストリームがエフェクトを完了し、フレームワークが登録解除されるので、あなたのエフェクトは動作を停止します。 – cartant

答えて

1

これは、あなたの効果でswitchMapを使用するために発生します。複数の内部サブスクリプションを維持できるように、mergeMapに切り替えます。

+1

そのような愚かな間違い、ありがとう(Y) –

関連する問題