我正在尝试发出多个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
谢谢大家,我们将不胜感激
答案 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);