【发布时间】:2020-09-20 07:26:53
【问题描述】:
使用 RxJs 时一个非常常见的问题似乎是希望一个或多个 observables 的结果然后在后续的结果中使用它们。
例如在伪代码中(这不是 rx 或故意的有效 js 语法)
var someResult = $observable-A; // wait to complete
var finalResult = $observable-B(someResult.aValueINeed);
这可以通过一种丑陋的方式来完成,您可以同时订阅两者并在另一个内部调用一个。但是,这非常混乱并且不能为您提供太大的灵活性。
例如(真正的语法)
$observable-A.subscribe(resultA => {
$observable-B(resultA.aValueINeed)
.subscribe(resultB => {
console.log('After everything completes: ', resultB);
}
}
这也意味着当你完成两个 observables 时,没有其他东西可以轻易地消耗这个流。
我的具体用例需要以下内容:
- 获取 $observable-A 的初始调用,因为它不需要任何其他内容(这是一个基本的 http GET 调用)
- 对另一个服务的 http GET 调用需要来自 $observable-A 的数据,该数据返回 $observable-B
- 使用两个可观察结果 (A + B) 为我的服务(在我的例子中是 Angular 服务)创建一个对象以返回一个列表。
我还需要能够在我的服务中订阅此功能,这就是为什么使用上面的订阅方法对我不起作用。
【问题讨论】:
标签: angular rxjs rxjs6 rxjs-pipeable-operators