如何使用 RxNET 发出异步 HTTP 请求?

芯片

目前我在 Observable.Create() 中使用 await。ExecuteRequestAsync 是一个包装类,用于调用HttpClient.GetAsync 方法(字符串)

    public IObservable<IList<ExampleResponseModel>> ListExamplesRx()
    {
        return Observable.Create<IList<ExampleResponseModel>>(
            o =>
            {
                try
                {
                    var url = string.Format(Routes.Examples.List);
                    IList<ExampleResponseModel> exampleResponse = await ExecuteRequestAsync<IList<ExampleResponseModel>>(url, HttpMethod.Get);
                    o.OnNext(exampleResponse);
                    o.OnCompleted();
                }
                catch (Exception e)
                {
                    o.OnError(e);
                }
                return Disposable.Empty;
            }
        );
    }

这是最佳做法吗?有没有更合适的 rx 解决方案?

理查德·萨莱

Task<T>.ToObservable() 做你正在寻找的:

public IObservable<IList<ExampleResponseModel>> ListExamplesRx()
{
    var url = string.Format(Routes.Examples.List);
    return ExecuteRequestAsync<IList<ExampleResponseModel>>(url, HttpMethod.Get)
        .ToObservable();
}

如果你想要一个冷的 observable(即延迟执行),你可以将上面的内容包装在Observable.Defer.

如果您需要支持取消,请参阅如何从任务创建 IObservable 以便取消订阅取消任务?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

连续发出多个异步HTTP请求并使用Realm编写

来自分类Dev

连续发出多个异步HTTP请求并使用Realm编写

来自分类Dev

使用异步发出GET请求

来自分类Dev

如何使用请求发出 HTTP HEAD 请求?

来自分类Dev

如何使用 HTTPoison 发出异步请求?

来自分类Dev

如何在没有AlamoFire的情况下在Swift 3中同时发出异步HTTP请求

来自分类Dev

如何使用grequests发出HTTP POST请求

来自分类Dev

如何使用Plink发出HTTP请求

来自分类Dev

如何从COBOL发出HTTP请求

来自分类Dev

如何间隔发出HTTP请求?

来自分类Dev

如何发出多个http请求?

来自分类Dev

如何间隔发出HTTP请求?

来自分类Dev

如何从 EJB 发出 HTTP 请求?

来自分类Dev

使用Clojure发出HTTP请求

来自分类Dev

使用cherrypy发出HTTP请求

来自分类Dev

无法使用 aiohttp 发出异步请求

来自分类Dev

如何使用HTTP拦截器发出HTTP请求

来自分类Dev

如何通过Cookie发出HTTP请求

来自分类Dev

如何从SQL Server发出HTTP请求?

来自分类Dev

如何在PHP中发出HTTP请求?

来自分类Dev

如何发出多个http呼叫请求(Nodejs)

来自分类Dev

如何查看网络上发出的http请求?

来自分类Dev

如何在PHP中发出HTTP请求?

来自分类Dev

如何从原始数据发出HTTP请求?

来自分类Dev

如何在工厂中发出http请求

来自分类Dev

aiohttp:如何发出简单的 http 请求

来自分类Dev

使用方形改装库发出http请求

来自分类Dev

使用PHP发出HTTP / 2请求

来自分类Dev

使用EF DBContext时发出Http请求