我正在尝试了解当两个(或更多)switchMap
被链接时会发生什么。
我正在使用此示例代码:
.switchMap(r => someCondition(r) ? Observable.throw(r._body) : Observable.of(r.json()))
.switchMap(r => r.error ? Observable.throw(new Error(r.error)) : Observable.of(r))
.catch(this.handleError.bind(this));
这里会发生什么?如果someCondition(r)
为真,则会发生throw
,并且从那里开始,我相信catch
将被执行。如果someCondition(r)
为false,那么第二个switchMap
将会进入,但它会作为参数接收什么? json()
的{{1}}输出?或者只是r
?
或许我完全错了,在这种情况下,我可以解释一下究竟发生了什么吗?
答案 0 :(得分:1)
这里会发生什么?如果someCondition(r)为true,则会发生抛出,从那里,我相信捕获将被执行。
是
如果someCondition(r)为false,那么第二个switchMap将进入,但它会作为参数接收什么? r的json()输出?或者只是r?
第一个switchMap
将返回Observable.of(r.json())
然后展平,因此第二个r
中的switchMap
将为r.json()