javascript - 用另外两个 observable 喂一个 observable
问题描述
我有一个包含 3 个 Web 服务的场景,比如 A、B 和 C。
A 和 B 可以在没有参数的情况下调用。C 需要来自 A 和 B 的参数。例如:
http.get("A").subscribe(x => console.log(x))
// prints 'goofy'
http.get("B").subscribe(y => console.log(y))
// prints 'mickey'
http.get("C?param1=goofy¶m2=mickey").subscribe(z => console.log(z))
// prints 'daisy'
我想知道如何创建一个单独的 Observable 来完成这项工作,以及它的订阅从 web 服务 C 返回结果。
obs1 = http.get("A")
obs2 = http.get("B")
f3 = (x,y => http.get("C?param1="+x+"¶m2="+y))
bigObservable = someconcatenationof(obs1, obs2, f3)
我想要那个
bigObservable.subscribe(z => console.log(z))
// should print "daisy"
我想这个问题可以概括一点:A、B、C 不需要是 web 服务,它们可以只是某种 Observable,其中 C 的构造函数需要来自 A 和 B 的结果。
解决方案
我认为这将是一种方法:
forkJoin({
a: http.get("A"),
b: http.get("B"),
}).pipe(
mergeMap(({ a, b }) => http.get(`C?param1=${a}¶m2=${b}`))
)
forkJoin
将同时订阅所有提供的可观察对象,并在所有对象完成时发出它们的最后一个值。
推荐阅读
- python - 如何使用python内置的函数读取文本文件以查找值
- jmeter - 为什么通过验证日志将 Jmeter 响应时间与服务器时间进行比较时不准确
- swift4.1 - 单元格数据未在表格视图 swif4 中正确显示
- highcharts - 如何解决 High Maps 中的互联网浏览器问题?
- c - 二维数组和指针表示
- javascript - 将 JS 日期从 unix 时间戳转换为特定格式
- git - 如何根据提交历史记录自动检测下一个 semver 版本?(提交分析器的 CLI 替代方案)
- c# - 如何将元数据传递给 QnAMaker 请求
- sql - F#:无法使用 SQLProvider 调用 MariaDB 数据库上的存储过程
- javascript - 可排序不在模态中工作,但在启动模态的页面上工作