链接switchMap

时间:2017-05-14 20:04:02

标签: javascript angular rxjs

我正在尝试了解当两个(或更多)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

或许我完全错了,在这种情况下,我可以解释一下究竟发生了什么吗?

1 个答案:

答案 0 :(得分:1)

  

这里会发生什么?如果someCondition(r)为true,则会发生抛出,从那里,我相信捕获将被执行。

  

如果someCondition(r)为false,那么第二个switchMap将进入,但它会作为参数接收什么? r的json()输出?或者只是r?

第一个switchMap将返回Observable.of(r.json())然后展平,因此第二个r中的switchMap将为r.json()