angular - Angular(分页 API 请求)您在预期流的位置提供了“未定义”
问题描述
我正在尝试发出多个 API 请求并将所有结果合并到一个数组中,但我的问题是其中一个 API 具有分页响应每次我尝试订阅 Observable 时都会收到以下错误
“你在预期流的地方提供了‘未定义’。你可以提供 Observable、Promise、Array 或 Iterable。”
组件.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);
});
}
服务.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
谢谢大家,任何帮助将不胜感激
解决方案
mergeMap 接受一个返回流的函数。但是当页面为空时,函数返回未定义,因此错误。要消除错误,只需:
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.
}
推荐阅读
- rust - Amethyst 的 fixed_update 是否有 Bevy 等价物?
- logistic-regression - 如何将 statsmodels 更新到 0.13.0.dev0 版本(使用 OrderedModel 模块)?
- sql - 过去 90 天内重复出现的数据
- python - OSX 上“arch”的意外输出(使用 Mac M1 安装弹性 bean)
- node.js - 我如何获得已完成多少次考试
- openstreetmap - 如何导出包含城市交通信号和街道灯的路线图?
- asp.net - Asp.NET Core + ReactJs - 存储身份验证信息的正确方法是什么?
- javascript - 在 Angular 应用程序中使用 ES6 模块库和意外的令牌“导出”错误
- firebase-authentication - 具有 Firebase 身份验证的 GCP Api 网关
- arrays - 是否必须为字符数组的初始化提供 '\0' ?