rxjs 不发出直到值不为空

dan*_*y74 6 rxjs

我有一个 Observable(我们称之为 myob$),它发出这样的值:

----- 空 ----- 1 ----------- 5 ---->

如果我做:

myob$.subscribe(x => console.log(x))

输出是 ----- null ----- 1 ----------- 5 ---->

我可以添加一个管道,以便它在 myob$ 的值不为空之前不会发出吗?

就像是:

myob$.pipe(x => ignoreEverytingUntilXIsNotNull).subscribe(x => console.log(x))

所以输出是 --------------- 1 ----------- 5 ---->

提前致谢

dan*_*y74 9

啊我很厚,我想你只需要这样做:

myob$.filter(x => !!x).subscribe(x => console.log(x))
Run Code Online (Sandbox Code Playgroud)

假设没有发出 0 :)


小智 1

RxJS v6 更新

使用过滤器仍然是一个很好的方法,但现在必须使用Pipe。还使用Falsy 逻辑对过滤器进行了更清晰的检查

myob$.pipe(filter<YourObject>(Boolean)).subscribe(x => console.log(x))
Run Code Online (Sandbox Code Playgroud)