无用的服务器调用,同时将过滤器与最新来源相结合



我有这个可观察到的:

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

其中 myServercall 是一个 http 请求。

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

我该怎么做才能避免无用的服务器调用?

withLatestFrom

不是一个好的选择,因为它订阅了所有源可观察量(这也意味着myServerCall),这就是它进行您不想要的远程调用的地方。

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

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

最新更新