我有这个可观察到的:
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);
});