【发布时间】:2019-12-15 15:20:37
【问题描述】:
我在我的应用程序中实现了一个搜索引擎,我需要获取我拥有的资源的所有数据,例如用户的所有帖子。
我的 api 例如返回以下内容:
{
"count": 2,
"next": "http://127.0.0.1:8000/resource/?page=2",
"previous": null,
"results": [
{
"resource_data": "data"
}
]
}
我想在我的服务中创建一个方法,该方法返回一个带有包含所有页面数据的数组的承诺。
我对 typescript 或 javascript 的了解有限,我找不到优雅的方法。
解决办法:
使用选定的答案作为我开发的最佳答案,该代码将用于我的服务
getAllMDPosts(): Observable<MDPost[]> {
return this.getRecursivelyMDPosts(`${environment.apiUrl}/mdposts/`);
}
private getRecursivelyMDPosts(url: string, results?: MDPost[]): Observable<MDPost[]> {
if (results === undefined) {
results = [];
}
return this.http.get(url).pipe(
switchMap(response => {
if (response.next) {
return this.getRecursivelyMDPosts(response.next, results.concat(response.results));
} else {
return of(results.concat(response.results));
}
})
);
}
我不是三元运算符的粉丝,我通常会在条件语句中添加更多代码,并且我必须修改三元运算符。
【问题讨论】:
标签: angular typescript django-rest-framework