使用返回IObservable来实现标准存在/结束异步模式的替代方法是否合理?在下面的代码中,我使用Rx封装了一个传统API,为它提供了一个更好的接口。使用IObservable实现异步方法
Messages
API上的属性是热 IObservable。我的问题是,如果在返回过滤响应的IObservable
之前收到响应消息(即m.RequestId == requestId
),我认为用户将看不到它并且不知道操作已完成。
有没有办法正确地做到这一点?
public IObservable<bool> DoAsyncRequest()
{
Observable.Defer(delegate
{
int requestId = GenerateRequestId();
this.api.DoApiRequest(requestId);
return this.api.Messages
.Where(m => m.RequestId == requestId)
.Take(1)
.Timeout(DefaultTimeout);
});
}