将过滤器与withLatestFrom结合使用时无用的服务器调用

时间:2017-09-22 07:46:21

标签: angular typescript rxjs

我有这个观察结果:

const myObservable = Observable.combineLatest(v1, v2)
    .filter(([v1, v2]: [boolean, boolean]) => v1 && v2)
    .withLatestFrom(myServerCall)
    .subscribe((data) => { 
        console.log(data);
    });

myServercall是http请求。

当我的过滤器不正常时,我不想进行http调用。但它总是调用我的服务器,即使它从未进入我的订阅功能。

如何避免无用的服务器调用?

1 个答案:

答案 0 :(得分:3)

withLatestFrom并不是一个很好的选择,因为它订阅了所有来源的Observable(这也意味着myServerCall)以及它所做的远程通话所在的位置#39} ;想要。

我认为switchMap在这里更有意义。

const myObservable = Observable.combineLatest(v1, v2)
    .filter(([v1, v2]: [boolean, boolean]) => v1 && v2)
    .switchMap(() => myServerCall())
    .subscribe((data) => { 
        console.log(data);
    });