Gau*_*jee 3 rxjs angular2-http angular
我正在从 angular2 应用程序调用外部 API,该应用程序以分页形式提供数据。响应看起来像这样
{
next: "next_url",
results: []
}
Run Code Online (Sandbox Code Playgroud)
我可以使用 Rxjs 或 Angular2 的内置 Http 类(它返回一个 observable)来连接下一个 url 的结果,直到
{
next: null,
results: []
}
Run Code Online (Sandbox Code Playgroud)
我觉得我需要使用 concatMap 运算符,但我还没有弄清楚语法,因为我是 Reactive Extentions 的新手。
这是我将如何做到的:
import {Component} from 'angular2/core';
import {Observable} from 'rxjs/Observable';
import 'rxjs/Rx';
@Component({
selector: 'my-app',
template: `<h2>Results: {{out | async | json}}</h2>`,
})
export class App {
constructor() {
this.out = this.getAllResults();
}
getAllResults(startIdx = 0) {
return this.getData(startIdx)
.concatMap(data => {
if (data.next) {
return this.getAllResults(data.next)
.map(resultsToJoin => [...data.results, ...resultsToJoin]);
} else {
return Observable.of(data.results);
}
});
}
// pretend this is our http call
getData(idx : number) {
const data = [{
next: 1,
results: [1, 2]
}, {
next: 2,
results: [3, 4]
}, {
next: null,
results: [5, 6]
}];
return Observable.of(data[idx]);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2846 次 |
最近记录: |