Sof*_*mes 12 c# system.reactive
使用Reactive Extensions,我可以想出许多方法来模拟具有副作用/ IO的操作 - 比如订阅来自聊天室的消息.我可以接受参数(比如聊天室)和观察者,返回一个Disposable,即
Disposable SubscribeTo(string chatRoom, Observer<ChatMessage> observer)
Run Code Online (Sandbox Code Playgroud)
或者在给定参数的情况下返回Observable,即
Observable<ChatMessage> GetObservableFor(string chatRoom)
Run Code Online (Sandbox Code Playgroud)
当返回一个Observable时,我还可以选择将其设置为"热"还是"冷",即在调用my方法或订阅observable时执行实际订阅.此外,我可以使可观察的多路复用与否,即当Observable有多个订阅者时共享相同的基础订阅,或者每次订阅时发起新的请求.
对于订阅带参数的外部事件源的操作,是否有使用RX的最佳实践方法?
返回一个*I*Observable要好得多,因为你可以用其他运算符组合返回的IObservable.尝试将东西放入自定义的SubscribeTo方法对我来说似乎是一个坏主意,因为没有任何关于SubscribeTo的可组合,所以你有点把自己画成一个角落.如果您返回IObservable,那么您可以稍后决定是否要发布/推迟等等...,只需使用现有的IO运算符即可.如果你在SubscribeTo中做到了,那就决定了,所有事情都必须分担后果.这种行为将被包含在SubscribeTo中,这违背了IO的目的......明确任何副作用.
| 归档时间: |
|
| 查看次数: |
2068 次 |
| 最近记录: |