监听多个网络请求完成后,才显示正常页面

一个页面有多个网络请求,需等待全部请求完成后,做一进步处理(比如隐藏加载页面)

方案1:使用Rxjava中操作符zip

这种方法很方便,不仅可以监听全部完成的时刻,还可以对多个请求结果进进一步处理。

方案2:没有使用Rxjava情况下,自定义个变量并监听它的变化

情景:今天使用了喜马拉雅的SDK,其网络请求直接使用了OKHttp,请求格式如下:

 CommonRequest.getAlbumList(HashMap<String, String>().apply {
            put("category_id", categoryId)
            put("calc_dimension", "1")//计算维度,现支持最火(1),最新(2),经典或播放最多(3
            put("count", "6")

        }, object : IDataCallBack<AlbumList?> {
            override fun onSuccess(p0: AlbumList?) {
                showHotAlbums(p0?.albums!!)
                curStatus = curStatus xor STATUS_4
            }

            override fun onError(p0: Int, p1: String?) {
                curStatus = curStatus xor STATUS_4
            }
        })
    }

思路:

  1. 定义一个当前状态变量 curStatus
  2. 定义多个状态常量
  3. 对curStatus变化做监听

其实主要难点就是curStatus变化的监听,不过kotlin已经解决了这难点,代码如下:

//定义常量
companion object {
        val STATUS_0 = 0
        val STATUS_1 = 1
        val STATUS_2 = 1 shl 1
        val STATUS_3 = 1 shl 2
        val STATUS_4 = 1 shl 3
        val STATUS_COMPLETED = 15
    }
    //定义curStatus
     var curStatus by Delegates.observable(STATUS_0) { property, oldValue, newValue ->
        run {
            when (newValue) {
                STATUS_COMPLETED -> {
                    showNormal()
                         }
                }
            }
        }
    }

``
常量使用了二进制,可以多curStatus判断当前请求完成状态()

observable()方法,第一参数给初始值,第二个参数为属性变化时回调的函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值