gpt4 book ai didi

angular - Rxjs - 使用 observables 作为值重新映射对象

转载 作者:行者123 更新时间:2023-12-03 16:39:56 25 4
gpt4 key购买 nike

我得到了一个这样的可观察对象:

  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.
}))
)
)

最佳答案

2020 年更新

forkJoin(
// as of RxJS 6.5+ we can use a dictionary of sources
{
google: ajax.getJSON('https://api.github.com/users/google'),
microsoft: ajax.getJSON('https://api.github.com/users/microsoft'),
users: ajax.getJSON('https://api.github.com/users')
}
)
// { google: object, microsoft: object, users: array }
.subscribe(console.log);

https://www.learnrxjs.io/learn-rxjs/operators/combination/forkjoin

关于angular - Rxjs - 使用 observables 作为值重新映射对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53728129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com