使用场景 1.边输入边搜索 2.边筛选边搜索
同一数据源的异步请求到数据返回的次序及耗时: A请求 -------------S响应 -----------ResponseA返回 B请求------S响应-------ResponseB
会导致的问题:如果发送的A和B请求返回的数据会相互覆盖,A请求的老数据就会覆盖B请求的新数据,结果展示的误差
技术 dio请求的取消
CancelToken cancelToken = new CancelToken(); cancelToken.cancel("cancelled");注意事项:cancelToken的cancle行为会取消此cancelToken的所有网络请求,上述场景的cancelToken就不能使用同一个
解决方案:队列,[AcancelToken,BcancelToken]
1.A请求 [AcancelToken] --------- 2.B请求 [AcancelToken,BcancelToken] 3.-----ResponseA ------ResponseB(B覆盖A,结果:B) 3.此时A请求未返回数据就AcancelToken.cancle(),[].remove(AcancelToken)-----ResponseB(结果:B)
注意:cancelToken.cancel("cancelled");会返回Error ,类型error.type == DioErrorType.CANCEL,会影响统一出错文案的提示
如果你有更合适的处理方案,请留言指正,谢谢