gpt4 book ai didi

javascript - 将 Observable 转换为 Observable

转载 作者:太空狗 更新时间:2023-10-29 18:22:04 26 4
gpt4 key购买 nike

我有一个 api 返回一个 Array<string> id,给定一个原始 id(一对多)。我需要对这些 id 中的每一个发出 http 请求,以从 api 取回关联数据。我不知道如何取 Observable<string[]>并将其映射到 Observable<DataType[]> .

我想保留原始的可观察性,并尽可能使用运算符来获得所需的结果。

管道 map运算符在这种情况下不起作用,因为可观察对象中的唯一项是数组。

下面是一些示例代码,与我正在尝试的实现类似。

getIds = (originalId: string) => {
return this.http.get<string[]>(url);
}

getDataFromIds = (originalId: string): Observable<DataType[]> => {
const ids$ = this.getIds(originalId);
// Make http calls for each of the items in the array.
result = ids$.pipe();

return result;
}

最佳答案

这是 switchMap 运算符的典型用例,将 forkjoin 运算符作为您的内部可观察对象。

getIds = (originalId: string) => {
return this.http.get<string[]>(url);
}

getDataFromIds = (originalId: string): Observable<DataType[]> => {
const ids$ = this.getIds(originalId);
// Make http calls for each of the items in the array.
result = ids$.pipe(switchmap(ids => forkJoin(ids.map(id => this.getId(id))));
// map the array of ids into an array of Observable<DataType>, forkjoin them and switch into it.

return result;
}

这是假设 getIds() 调用将产生一个字符串 ID 列表,并且您有一些 getId() 函数接受一个字符串 ID 并返回一个可观察的数据类型

关于javascript - 将 Observable<String[]> 转换为 Observable<DataType[]>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55008372/

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