展平嵌套的Observables.subscribe

时间:2016-03-30 11:34:22

标签: javascript promise angular rxjs observable

我是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的等效内容。

1 个答案:

答案 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];
  (...)
});