在构造函数中设置我的可观察对象时,如何在转换/选择函数期间调用异步函数或返回IObservable的函数?
我已经尝试过在select函数中进行各种排列,但是它们都会导致编译器错误。
在构造函数中:
this.WhenAnyValue(k => k.BaseProperty).Select(j => ObjectHelpers.GetAnotherValueThatReturnsObservable(j)).Select(m => m)
.ToProperty(this, k=> k.PropertyToUpdate, out this.OaPHProperty, initialValue: false);
其他功能
IObservable<bool> ObjectHelpers.GetAnotherValueThatReturnsObservable(j)
{
...this returns an IObservable that is used to update a property whenever BaseProperty changes.
}
这是错误消息 无法从用法中推断出方法'OAPHCreationHelperMixin.ToProperty(IObservable,TObj,Expression>,ObservableAsPropertyHelper,TRet,bool,IScheduler)'的类型参数。尝试显式指定类型参数。
答案 0 :(得分:2)
SelectMany
方法包含用于处理任务和异步方法的重载。它具有可以处理取消的重载。如果您使用此方法而不是“选择”,它将解决您的问题。
另一种替代方法是使用.Select(Observable.FromAsync(...method...).Switch()
。这种方法将选择一个新的可观察对象。开关将自动处理旧值