angular2如何让两个请求同步

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

方法一:Rxjs.Observable.zip方法

Rx.Observable.zip(x, y)
            .subscribe(
               (data) => {
                console.log(data);
            }, (err) => {
                console.log(err);
            });

angular2如何让两个请求同步_第1张图片

方法二:Rxjs.Obserable.forkJoin

forkJoin`是 Rx 版的 Promise.all()

例1:

const getPostOne$ = Rx.Observable.timer(1000).mapTo({id: 1});
const getPostTwo$ = Rx.Observable.timer(2000).mapTo({id: 2});

Rx.Observable.forkJoin(getPostOne$, getPostTwo$).subscribe(res => console.log(res))

例2:

Rx.Observable.forkJoin(x, y)
    .subscribe(data => {
        console.log(data);
    }, err => {
        console.log(err);
    });

注:forkJoin 是串行地结合每个 Observable 的最后一个 emit 的值。串行的意思是 a 结束了才到 b ,b 结束了才到 c 。例:2中定义的 x 和 y 都没有明确地定义其 complete ,所以 forkJoin 实际是不知道 x 什么时候结束,从而无法进行下去的。所以需要明确地给每个subject(注意不是Observable)加上其complete方法

subject.onNext([data])
subject.complete()

 

转载于:https://my.oschina.net/twleo2016/blog/1552057

你可能感兴趣的:(angular2如何让两个请求同步)