我一直在这样做我的网页请求:
public IObservableGetFoo(string fooId) { var uri = /* set up the GET query parameters here */; return Observable.Create ( obs => new HttpClient().GetAsync(uri) .ToObservable() .Subscribe(response => { try { response.EnsureSuccessStatusCode(); response.Content.ReadAsStringAsync() .ToObservable() .Select(JObject.Parse) .Select(json => new Foo(json)) .Subscribe(foo => { obs.OnNext(foo); obs.OnCompleted(); }); } catch (Exception e) { obs.OnError(e); } }));
}
但是,我觉得作为Rx的一个相对较新的人,我可能会错过一些简化我所写内容的方法.看起来外部Observable
只是内部的一个包装,我可以(不知何故)揭露它,而不是 - 我只是不知道如何.