问题描述
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 来完成这项工作,并且它的订阅返回 webservice 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 不需要是网络服务,它们可以是某种 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
将同时订阅所有提供的 observable,并在它们全部完成时发出它们的最后一个值。