Angular(分页API请求)您在期望流的位置提供了“未定义”

时间:2019-02-14 01:58:57

标签: angular api get request

我正在尝试发出多个API请求并将所有结果合并到一个数组中,但是我的问题是其中一个API具有分页的响应 每当我尝试订阅Observable时,都会出现以下错误

“您在期望流的位置提供了'undefined'。您可以提供Observable,Promise,Array或Iterable。”

component.ts

ngOnInit() {
    this.appService.multipleDataRequest().subscribe(responseList => {
      console.log(responseList);
    // this.response1 = responseList[0];
    // this.response2 = responseList[1];
    // return this.arr = this.response1.concat(this.response2);
    });
 }

service.ts

fetch(url) {
    return this.http.get(url).pipe(
      mergeMap(
      data => {
        const page = data['next_page'];
        console.log(page);
        if (page !== null) {
          return this.fetch(page);
        }
      }
      )
    );
  }

    multipleDataRequest(): Observable<any[]> {
    // const news = this.http
    // .get<INews[]>('xxx');
    const articles = this.fetch('https://casounico.zendesk.com/api/v2/help_center/es/articles.json?');
    // return forkJoin([news, articles]);
    return forkJoin([articles]);

我也正在共享StackBlitz https://stackblitz.com/edit/angular-7j5v1z

谢谢大家,我们将不胜感激

2 个答案:

答案 0 :(得分:0)

mergeMap带有一个将返回流的函数。 但是当page为null时,该函数将返回undefined,从而返回错误。 要消除该错误,只需:

data => {
        const page = data['next_page'];
        console.log(page);
        if (page !== null) {
          return this.fetch(page);
        } else return [];  // return whatever you want, but it needs to be an array, observable or promise. 
      }

答案 1 :(得分:0)

mergeMap带有一个将返回流的函数。但是当page为null时,该函数将返回undefined,从而返回错误。要消除该错误,只需:

Transaction_Weekly_Adapter adapter = new Transaction_Weekly_Adapter(this, transactions);