在角度为6

时间:2018-08-25 05:25:26

标签: angular

我是angular和rxjs世界的新手,我想实现以下目标, [卡片][1]

我有两个角度服务,它们返回可观察到的响应。

当我订阅第一项服务时,它返回一个包含3个网站网址的数组,请考虑res [3] = [xyz.com,abc.com,pqr.com]

接下来,我需要通过传递上面接收的URL来查询第二个服务,以从每个站点获取详细信息。

最后,对于每个站点,我都应该从我的第一项服务中收到响应,并从第二项服务中获得相关的详细信息。

喜欢

xyz.com ->> 访问过的用户, 访问过的用户名, 命中数 等等。

abc.com ->> 访问过的用户, 访问过的用户名, 命中数 等等。

pqr.com ->> 访问过的用户, 访问过的用户名, 命中数 等等。

任何帮助将不胜感激。

感谢C

1 个答案:

答案 0 :(得分:0)

服务1:

import { HttpClient } from '@angular/common/http';

@Injectable()
export class Services1 {
   constructor(private http: HttpClient){}

   getSitesList(): Observable<any>{
       return this.http.get('https://url')
         .map(data => {
            console.log(data);
         });
    }
}

服务2:

import { HttpClient } from '@angular/common/http';

@Injectable()
export class Services2 {
   constructor(private http: HttpClient){}

   getSitesDetailsList(sites): Observable<any>{
       const observableBatch = [];
       sites.forEach((siteName)=> {
           if (siteName) {
              observableBatch.push(this.getSitesDetails(siteName));
           }
       });
       return Observable.forkJoin(observableBatch);

    }

   getSitesDetails(name): Observable<any>{
       return this.http.get('url/name')
         .map(data => {
            console.log(data);
         });
    }
}