【发布时间】:2017-03-06 21:20:01
【问题描述】:
我试图了解 Observables 和 RxJS 的工作原理,所以这可能根本不是如何使用它们的重点。
我有一个 Angular2 应用程序,并且还使用 RxJS Observables 来发送事件。现在对于一种特殊类型的错误事件,我想知道该事件是否已经由另一个订阅者处理。 Observable 上可能存在多个订阅者,其中一些可能会对该事件承担全部责任,这样其他订阅者就不会再得到它了。
这个想法来自路由事件在 WPF 中的工作方式。在事件处理程序中,您将获得RoutedEventArgs 参数,该参数具有属性Handled:
如果设置,如果事件被标记为已处理,则设置为true;否则为假。如果读取此值,则 true 表示类处理程序或沿途的某个实例处理程序已标记此事件已处理。 false.表示没有此类处理程序已将事件标记为已处理。
另一个实现示例是中间件在 ASP.NET Core 管道中的工作方式 - https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware - 您可以调用下一个中间件或只返回一个结果。
我正在考虑将 Handled 属性添加到我要放入可观察管道的事件中,但我不确定这是否是在 RxJS 中执行此操作的惯用方式。
【问题讨论】:
-
你绝对不想改变观察到的对象。
标签: javascript events rxjs routedevent