作者:手机用户2702933521 | 来源:互联网 | 2022-12-02 17:08
有时,我需要以前可观察到的值,并运行另一个依赖于该值的函数,依此类推。它进行嵌套的subcribe()调用,然后代码非常难看且难以管理。我这里有一个例子:
getObservableData().subcribe(next=>
let dialogRef=this.dialog.open(EvalListComponent, {data: next})
dialogRef.afterClosed().subscribe(next=>{
let k=dialogRef.componentInstance.getAnotherObservableData()
.subcribe( next=> doSomthing(next))
}))
什么样的解决方案可以遇到这种情况。我需要一些扁平的结构。我知道有一个管道函数,可以与rxjs运算符一起使用。但是如何实现呢?
1> Balázs Takác..:
我推荐这篇文章:学习展平策略。
TLDR:使用地图运营商,如:mergeMap
,switchMap
,concatMap
,exhaustMap
。
它们大多数都以相同的方式工作-
它们将一些值映射到可观察值(您是负责从它们返回可观察值的对象,他们只是将其映射)
他们展平了您返回的可观察物(他们只是订阅了它)
他们决定展平之前/之后该做什么(“平展策略”)
您只需决定哪种策略对您的示例有用。通过阅读该文章,您可以轻松弄清楚。