【发布时间】:2019-09-26 05:30:18
【问题描述】:
我正在使用 rxjs 5.5.6。
我创建了这段代码来显示行为:
Observable.of(1, 2)
.do(a => {
console.log(a);
let d:string = null;
let r = d.length; // it raises an null exception
})
.catch(() => {
console.log("error catched"); //exception is capture here
return Observable.never();
})
.subscribe();
我期待的输出是:
1
error catched
2
error catched
但是,输出是:
1
error catched
这意味着,尽管在 .catch(...) 方法链上返回了 Observable.never(),订阅仍将终止。
有什么想法吗?
真实案例
this.subs = Observable
.merge(this.$searchQuery, this.$lazyQuery)
.do(() => this.loadingPage())
.map(filter => this.buildURL(user, app, filter))
.switchMap(url => this.service.getItemsFromService(url))
.map(response => this.buildPage(response))
.do(page => this.loadedPage(page))
.catch(() => {
this.loadedPage(pojo.Page.EMPTY);
return Observable.never();
})
.takeUntil(this.$unsubscribe)
.subscribe();
【问题讨论】:
-
你为什么deleting 并转发同样的问题?你觉得这会给你答案吗??
-
the subscription terminates是什么意思? -
订阅应该继续处理
2值而不是停止...
标签: angular typescript rxjs