【发布时间】:2018-04-11 15:41:17
【问题描述】:
我有一个主题 (this.searchSubject),当我想执行搜索时,我会调用 next():
this.searchSubject.next(postBody)
这会导致以下触发:
this.searchSubject
.switchMap((view: any) => {
// upsert here records the search - needed
return this.searchHistoryService.upsert(view)
.flatMap(() => this.http.post(this.url, view))
.map((data) => this.pageTransform(data));
})
.subscribe(res => {
this.successSubject.next(this.pageTransform(res));
}, err => {
this.errorSub.next(err);
});
不幸的是,无论我做什么,如果this.errorSub.next(err); 被调用(错误情况),我似乎都无法让流保持活动状态。
由于 httpClient (this.http.post) 每个返回一个新的 observable,我不会认为处理错误会是一个问题,但似乎这会从 this.searchSubject 中删除所有观察者。
请注意,我有一个 httpInterceptor,它会为每个返回的错误返回一个抛出的错误。
这一定是一个非常普遍的模式,那我做错了什么?
【问题讨论】:
-
您使用的是哪个
rxjs版本? -
5.5.2 以上
标签: javascript angular rxjs reactive angular-httpclient