首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个http调用角7

多个http调用角7
EN

Stack Overflow用户
提问于 2019-08-25 12:56:42
回答 1查看 100关注 0票数 0

在这种情况下,我不得不根据父数据获取一些数据。

  1. 我发出了一个http请求来获取所有组件列表,而在订阅中,我有一个forEach循环来迭代每个组件。
  2. 在每个组件的for循环中,我进行另一个http调用,以获取每个组件的子组件。
  3. 在外部循环中,我只需要将组件名推送到新数组,而在其中,与内环一样,我必须将子组件名推送到与属性“子”相同的数组中。

现在的问题是外循环在内部循环之前已经完成,所以数组如下所示

[{name:'parentcomp1',子代:{}}]

这是代码

代码语言:javascript
运行
复制
prepareJson() {

this.service.getComps().subscribe(res =>{
  var comps = res;
  var that = this;
 
 for(var element of comps) {
 
 that.service.getChilds(element._id).subscribe((res1:any)
 =>{
 
 if(res1.length>0)
 
   list.push({name:element.name,children:res})
 },err => console.log(err));
 }


},err => console.log(err));
}

请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-26 05:18:40

要首先修复上面的代码,您的函数应该返回一个可观察的/允诺,因为HTTP调用是异步的。

此外,您还可以使用“mergeMap”来解决您所面临的进一步问题。例如(注意:代码未经测试)

代码语言:javascript
运行
复制
import { Observable, from, EMPTY, Subject } from 'rxjs';
import { mergeMap, finalize, catchError } from 'rxjs/operators';


private prepareJson(): Observable<T> {
const response$ = new Subject<T>();

this.service.getComps().subscribe(res => {
    const comps = res;

    from(comps)
    .pipe(
        mergeMap((element: any) => {
        return this.service.getChilds(element._id)
            .pipe(
            catchError(err => {
                console.log(err);
                return EMPTY;
            })
            );
        }),
        finalize(() => {
        response$.next(list);
        response$.complete();
        }),
    ).subscribe((res1: any) => {
        if (res1.length > 0) {
        list.push({ name: element.name, children: res });
        }
    });
}, (err) => {
    console.log(err);
    response$.error(err);
    response$.complete();
});

return response$.asObservable();
}

在这里,'prepareJson‘是返回一个可以观察到的外部世界。我们从'getComps‘中获取结果,并在此基础上获取它。一旦检索到所有结果,就会通过可观察的方式触发结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57646207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档