HTTP アクションを作成してディスパッチするための単純なコード パスが必要です。私がやりたいことは次のようなものです:
this.http.request(...)
.map((res: Response) => res.json())
.catch((err: any) => err.json())
.map((payload: any) => { type: 'SUCCESS', payload })
.catch((payload: any) => { type: 'FAILURE', payload})
.subscribe((action: Action) => this.store.dispatch(action));
このようにして、成功と失敗の両方の応答が JSON に変換され、成功/失敗の基準に基づいて正しいリダクション タイプが割り当てられるため、ストアを適切に操作できます。(200 または 401 を返すユーザー ログインの成功と失敗を考えてください)。
これを処理するためのよりクリーンまたはより良い方法はありますか? オブザーバブルを返さないため、現在の 2 番目.catch
はうまく機能しません。
提案やその他の解決策を歓迎しますか?