我有这个观察结果:
const myObservable = Observable.combineLatest(v1, v2)
.filter(([v1, v2]: [boolean, boolean]) => v1 && v2)
.withLatestFrom(myServerCall)
.subscribe((data) => {
console.log(data);
});
myServercall是http请求。
当我的过滤器不正常时,我不想进行http调用。但它总是调用我的服务器,即使它从未进入我的订阅功能。
如何避免无用的服务器调用?
答案 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);
});