使用场景
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
,会影响统一出错文案的提示
如果你有更合适的处理方案,请留言指正,谢谢