我是rx.js的Observables
的新手,我想知道如何压扁以下的回调地狱:
function getdata1 (argument) {
return this.http.get(url)
.map((res: Response) => res.json());
}
function getdata2 (argument) {
return this.http.get(url)
.map((res: Response) => res.json());
}
getdata1.subscribe((data1: any) => {
console.log("got data one. get data 2 now");
getdata2.subscribe((data2: any) => {
console.log("got data one and two here");
});
});
我知道如果这是Promises,then()
本可以用来压扁它。但我不知道then()
中Observables
的等效内容。
答案 0 :(得分:4)
您可以将flatMap
运算符与Observable.forkJoin
:
getdata1().flatMap(data1 => {
return Observable.forkJoin([
Observable.of(data1);
getdata2()
]);
}).subscribe(result => {
var data1 = result[0];
var data2 = result[1];
(...)
});