【发布时间】:2017-11-22 07:12:42
【问题描述】:
我有一个像这样的 RxJS5 管道
Rx.Observable.from([2, 3, 4, 5, 6])
.takeWhile((v) => { v !== 4 })
我想保留订阅直到看到 4,但我希望最后一个元素 4 也包含在结果中。所以上面的例子应该是
2, 3, 4
但是,根据official document,takeWhile 运算符不包含在内。这意味着当它遇到与我们给出的谓词不匹配的元素时,它会立即完成流,而不是最后一个元素。结果,上面的代码实际上会输出
2, 3
所以我的问题是,我可以实现 takeWhile 并使用 RxJS 发出最后一个元素的最简单方法是什么?
【问题讨论】:
-
有点滑稽,但最简单的方法是
.takeWhile(v => v < 5) -
可能没有帮助,但相关(这是我在找到这篇文章后最终使用的):RxJava has a
takeUntilmethod which takes a predicate。与takeWhile的不同之处在于它确实包含最后一项。
标签: rxjs reactive-programming rxjs5