RxJS可观测嵌套订阅?
简化如下代码示例的方法是什么? 我找不到合适的接线员。。谁能举个简单的例子RxJS可观测嵌套订阅?,rxjs,observable,subscribe,Rxjs,Observable,Subscribe,简化如下代码示例的方法是什么? 我找不到合适的接线员。。谁能举个简单的例子 this.returnsObservable1(...) .subscribe( success => { this.returnsObservable2(...) .subscribe( success => { this.returnsObservable3(...) .subscrib
this.returnsObservable1(...)
.subscribe(
success => {
this.returnsObservable2(...)
.subscribe(
success => {
this.returnsObservable3(...)
.subscribe(
success => {
...
},
如注释中所述,您正在寻找
flatMap
操作符
您可以在前面的答案中找到更多详细信息:
this.returnsObservable1(...)
.flatMap(success => this.returnsObservable2(...))
.flatMap(success => this.returnsObservable3(...))
.subscribe(success => {(...)});
switchMap操作符也很有用。 与嵌套订阅相比,以下示例描述了switchMap的有用性:
在之前回答RxJS 5时,我在使用RxJS 6的同时在这一页上结束了 如果您也在6上(我认为您现在应该在6上),您可以使用
flatmap
作为内部管道
修改了@user3743222的示例代码:
this.returnsObservable1(...)
.pipe(
flatMap(success => this.returnsObservable2(...)),
flatMap(success => this.returnsObservable3(...))
)
.subscribe(success => {(...)});
您可能正在寻找flatMap
或switchMap
操作符。示例不一定足够,但感谢您的分享。我发现的一个通用模式是将所有“subscribes”替换为返回下一个内部可观察对象的“switchMap”。然后将嵌套最多的“subscribe”钉在chain@RobinDijkhof所以在flatmap,.flatmap(success=>this.returnsAbservable2(…)
中使用了一个返回observable的函数,然后this.returnsAbservable2(…)
我不需要订阅它吗?如果returnsObjectable 2
会返回一个可观察的数组,你能举个例子吗?
Rx.Observable
.interval(5000)
.switchMap((val) => {
console.log("outer:", val);
return Rx.Observable.interval(1000).map((ival) => [val, ival]);
})
.subscribe((val) => {
console.log("inner:", val[0], val[1]);
});
this.returnsObservable1(...)
.pipe(
flatMap(success => this.returnsObservable2(...)),
flatMap(success => this.returnsObservable3(...))
)
.subscribe(success => {(...)});