get请求传null_UniRx 精讲 2019:21.ObservableWWW 优雅的网络请求操作

6c5dd8ea03b24b43f70e1469cddb0b96.png

以往我们不管使用 WWW 还是 UnityWebRequest 都要使用 Coroutine 去驱动。

但是使用协程写出来的代码,需要一堆判断,导致代码非常混乱。

而 UniRx 则是以以往一样简练的风格提供了对网络请求的支持。

代码如下:

ObservableWWW.Get("http://liangxiegame.com")
            .Subscribe(_ =>
            {
                // todo some thing
            }).AddTo(this);

非常简单。

当然,ObservableWWW 同样支持 WhenAll 操作符。

代码如下:

var aStream = ObservableWWW.Get("http://liangxiegame.com");
var bStream = ObservableWWW.Get("http://qframework.io");

ObservableWWW.WhenAll(aStream, bStream)
            .Subscribe(_ =>
            {
                // do something
            }).AddTo(this);

除了 Get 也支持了 Post,还有 GetWWW 和 PostWWW 这种的辅助封装,还有 GetAndGetBytes 和 PostAndGetBytes。

列出 QFramework 中一段下载文件的代码:

// http://liangxiegame.com/media/QFramework_v0.0.9.unitypackage
protected override void OnBegin()
{
    ...

    var progressListener = new ScheduledNotifier<float>();

    ObservableWWW.GetAndGetBytes(mRequestPackageData.DownloadUrl, null, progressListener)
            .Subscribe(bytes =>
            {
                ...
            });

    progressListener.Subscribe(OnProgressChanged);
}

private void OnProgressChanged(float progress)
{
    EditorUtility.DisplayProgressBar("插件更新",
        "插件下载中 {0:P2}".FillFormat(progress), progress);
}

ObservableWWW 的 API 都可以传进去一个 ScheduledNotifier<T>() ,用来监听下载进度的。
Subscribe 之后传回来的值则是当前的进度。

而且 ObservableWWW 的 Get 和 Post 请求都可以自己传对应的 header 和 WWWForm。

除了常用的 Get 和 Post 请求,也对 AssetBundle 的加载也做了简单的封装。
提供了诸如 ObservableWWW.LoadFromCacheOrDownload 这样的 API。
如果想深入了解,可以参考 ObservableWWW.cs

总之对 WWW 提供的 API 非常简练,也足够使用。

今天的内容就这些。

知识地图

829ccd63c8a9eaf5cdc45df523a412b5.png

更多内容

关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。

QQ 交流群:623597263

付费版专栏地址(需注册): http://master.liangxiegame.com/zhuanlan

订阅付费版本专栏将获得如下权益

  • 更好的阅读体验
  • 阅读进度
  • 目录、大纲
  • 无广告
  • 移动端适配
  • 在评论区可以与作者和其他童鞋交流
  • 完整的 2019 年的版本
  • 重写的 2020 年的版本
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值