Observableのエラー発生以降にnext()が機能しなくなる。Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。登録してこのコミュニティに参加するどなたでも質問していただけますどなたでも回答していただけます最もよい回答には賛成票が入り、最上位に上がりますホーム質問タグユーザーObservableのエラー発生以降にnext()が機能しなくなる。198件33https://angular.io/docs/ts/latest/tutorial/toh-pt6.html上記チュートリアルに従いObservableにてhttp処理を実装しています。以降nextをコールしてもデータが流れていきません。ユーザーにしばらく待ったのち再トライすることを促し、もう一度SubmitさせるようなUIにしたいのですが、エラーをハンドル(onError()をコール)しつつ、エラー発生後もストリーミングを止めない方法はありますでしょうか?追記:こちらの記事を参考に下記の様にerrorが発生し得る処理のcatchをswitchMap()の中に入れ子にすることによってエラーが発生してもnextに空配列が渡されるようにはなりました。用途に応じswitchMap/flatMap/mergeMapどれでも良い理解ですが誤りあればご指摘ください。})しかしながら目的動作は「subscribe.onError()をコールしてもらいつつ、エラー時に受付を止めたくない」となります。前述した記事に関してもonError()はコールされておらず、入れ子にしたcatchがコールされるのみでした。(Observableのストリーミングの一部をUtilクラスに内包しており、使用者側にObservableを返すような作りにしているので、ストリーミング内のエラーが発生し得る処理ひとつひとつのcatchを使用者側に課したくなく、あくまでsubscribeで結果を通知したいためです。個の銅バッジerror/completeが発生するとストリームは殺されるので一旦別のObservableで受けるという回答、flatMapを使用してエラーを受ける内部のObservableを作成するという回答。どちらもObservableでの実装の話でSubjectでも同様にできるかわかりませんが、興味があるので試してみてぜひ結果を共有してもらいたいです。9:28flatMapは(私のimportが悪いだけだと思うので見直しますが)エラーがでてしまったのでまだ試していないのですが、二つ目の記事のポイントはエラーが起きうる処理をObservableの入れ子にする点であると理解し、上記のhttp処理(serach())をそのままswitchMapの入れ子にしたところうまく行きました。他の記事を見ても「flatMap()を使用して」、というのをよく見ます。flatMap()でなければいけない理由等わかりますでしょうか。5:36「エラーハンドリング」の定義が曖昧でしたので「subscribe.onError()」を追記しました。13:02コメント遅くなりすみません。質問に追記されていますが、flatMapは非同期的、switchMapは同期的にObservableを処理します。switchMapはRxJS4以前ではflatMapLatestのことです。0:50追記された部分についてですが、先のコメントにも書いたようにerror/completeが発生するとストリームがkillされるというのがObservableの基本思想なので出来ないのではないでしょうか。呼び元にはObservableで返さずに、「subscribeで吸収し呼び元にonNext、onErrorを返す」ような独自のObservableっぽい内部処理を用意するしかなさそうです。すみません試せていませんので、回答ではなくコメントにしています。回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。