【发布时间】:2016-02-15 19:54:11
【问题描述】:
来自the docs for the TakeUntil operator(强调我的):
TakeUntil 订阅并开始镜像源 Observable。它还监视您提供的第二个 Observable。如果第二个 Observable 发出一个项目或发送终止通知,TakeUntil 返回的 Observable 将停止镜像源 Observable并终止。
如果这是真的,那为什么会阻止?:
Observable.Never<Unit>()
.TakeUntil(Observable.Empty<Unit>())
.Wait();
【问题讨论】:
-
从一个非终止序列中获取,直到一个空序列发出一个项目。听起来它应该无限期地阻止。
-
你为什么认为这会抛出异常而不是永远等待?
-
@juharr:您说得对,没有发出任何项目,但
Empty()应该立即发送终止通知,不是吗? -
@seldon 好的,我明白你现在的意思了。
TakeUntil应该看到第二个序列已经终止,因此返回一个终止的序列,Wait不应该阻塞,但我没有看到任何异常的原因。 -
fwiw,(旧的)MSDN Documentation 与主 Rx 站点不同,仅声明
TakeUntil“从源可观察序列返回值,直到另一个可观察序列产生值。”不考虑终止的 observables。
标签: c# .net system.reactive