angular - 在 RxJs 6 中避免嵌套的 subcribe() 调用
问题描述
有时我需要来自以前的 observable 的值并运行另一个依赖于该值的函数,依此类推。它进行嵌套的 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 运算符一起使用。但是怎么可能实现呢?
解决方案
我推荐这篇文章:学习扁平化策略。
TLDR:使用地图运算符,例如:mergeMap
, switchMap
, concatMap
, exhaustMap
.
它们大多都以相同的方式工作——</p>
它们将一些值映射到可观察值(您是负责从它们返回可观察值的人,他们只是映射它)
他们将你返回的 observable 变平(他们只是订阅它)
他们决定在扁平化之前/之后做什么(“扁平化策略”)
您唯一需要决定的是哪种策略对您的示例有用。通过阅读这篇文章,你可以很容易地弄清楚。
推荐阅读
- r - 参数名称函数 R
- python - 使用flask.app.test_client()测试Flask应用程序时如何在python Flask中指定标头?
- php - Pimcore:保存对象的新版本但不发布此版本
- asp.net-core-identity - 如何在视图中获取 Asp.net Core Identity 用户
- python - Keras 批量训练在线预测不学习
- java - 如何使用 LambdaMetaFactory 调用构造函数?
- php - php-encrypt 比较两个数据
- r - 从文本中去除数字:R
- python - 更快的代码温度传感器 - Raspberry Pi
- html - 页脚社交图标在调整大小时不会均匀分布