为什么 RxJs 管道过滤器允许非真实值通过?

Why is RxJs pipe filter allowing non true values through?

我正在学习 Rxjs observables 并试图找出为什么下面的过滤器没有按我预期的那样工作。

我的问题是以下设置,为什么即使 classA 的 var1 值不正确,.then() 块中的代码也会执行?过滤器函数不应该只允许通过的真值变成一个承诺,其余的都被丢弃吗?

Class A:
   var1: boolean;

Class B:
   var2$: observable<boolean> = of(classA.var1)
   
   FilterObservableValue(){
        this.var2$.pipe(
                filter( x => x === true)
            )
            .toPromise()
            .then(() => {
                //Why is Code here executed when value of var2$ is false? Shouldn't filter function filter out non true values?
            })
            .catch(err => {
                console.log(err);
            });

   }

过滤器运算符运行良好,问题出在 toPromise:

你必须知道这是 Promises 的自然行为。因此,即使它不会收到任何值,它也不会拒绝,并且会用 undefined value

来满足