我有一个像这样的可观察的:
const original = Observable.of({
a: this.http.get('https://jsonplaceholder.typicode.com/todos/11'),
b: this.http.get('https://jsonplaceholder.typicode.com/todos/22'),
c: this.http.get('https://jsonplaceholder.typicode.com/todos/33')
});
我需要解决内部 observables 并在订阅处理程序中得到类似的东西:
{
a: ResponseFromServer,
b: ResponseFromServer,
c: ResponseFromServer,
}
我应该如何解决这个问题?
谢谢。
编辑:我已经想通了,请阅读下文。
似乎没有多少人知道 *Map 运算符曾经有一个称为resultSelector
第二个参数的东西。现在在 rxjs v6 中,你可以用 做同样的事情inner map
,让我告诉你。
const original = Observable.of({
a: this.http.get('https://jsonplaceholder.typicode.com/todos/11'),
b: this.http.get('https://jsonplaceholder.typicode.com/todos/22'),
c: this.http.get('https://jsonplaceholder.typicode.com/todos/33')
});
const transformed = original.pipe(
mergeMap(sourceValue =>
forkJoin(_.values(sourceValue)).pipe(map(resolvedHttpRequests => {
// here you have access to sourceValue as well as resolvedHttpRequests so you can do manual join to match the data.
}))
)
)