You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在内置库函数可接收Func<T>并返回IObservable<T>?

现成方案:用Observable.Defer实现

你要的功能完全可以用Rx.NET自带的方法组合实现,无需自己编写自定义代码,效果和你给出的逻辑完全一致:

Observable.Defer(() => Observable.Return(factory()))

原理说明:

  • Defer会推迟到每次订阅发生时才执行传入的lambda
  • 如果factory()执行时抛出异常,Defer会自动将异常转为IObservable<T>的OnError通知,和你代码里的Observable.Throw<T>(ex)效果一致
  • 若factory()正常返回结果,就通过Observable.Return发出OnNext+OnCompleted通知,完全匹配你的自定义逻辑

额外补充:如果需要让factory()在后台异步执行,可以用Observable.FromAsync(factory),但它会开启后台线程;而你原代码是同步执行逻辑,所以Defer+Return是最贴合需求的开箱即用方案。

内容的提问来源于stack exchange,提问作者Luboš Hemala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:27:07