javascript-将可观察的转换为可观察的

我有一个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并返回一个可观察的DataType.

上一篇:rbac组件之动态二级菜单之路径导航


下一篇:javascript-使用敲除.js将css类绑定到可观察数组item.chosen值