重复请求

某个重复发起的请求, 在发起的时候自动取消旧的网络请求.

这种应用场景常见于筛选菜单, 每次点击菜单都会发起网络请求返回筛选后的列表, 但是请求未完成时, 用户又点击了新的筛选条件, 这个时候应该取消上次请求, 重新发起新的请求

这个需求在Net中非常好实现, 保存一个变量即可

var scope: AndroidScope? = null

btn_request.setOnClickListener {
    tv_result.text = "请求中"
    scope?.cancel() // 如果存在则取消

    scope = scopeNetLife {
        val result = Post<String>("api").await()
        Log.d("日志", "请求到结果") // 你一直重复点击"发起请求"按钮会发现永远无法拿到请求结果, 因为每次发起新的请求会取消未完成的
        tv_result.text = result
    }
}

scope不为空时即表示存在上个请求, 我们无论上个请求是否完成都调用cancel函数保证取消即可

详细的关于取消网络请求的操作查看: 取消请求