在处理以下列表中,如果过于频繁点击选项(红色框),可能会出现数据展示错误的情况(请求函数相同,只有查询参数不同)
async loadGood (params) {
let res = await app.request(api.loadGood, params)
if (res.code === 1) {
let { list } = this.data
let _list = res.data.data
if (_list.length !== 0) {
list = list.concat(_list)
this.setData({ list })
}
}
}
例如连续点击A、B选项(发送了A、B请求),理想情况下A先完成回调,页面拿到A请求返回的数据,然后B完成回调,页面拿到B请求返回的数据,最终页面展示B接口的数据
不理想的情况下,A请求回调比B请求还慢,于是B先执行回调了,页面先拿到了B请求返回的数据,然后A才完成回调,页面最终展示A请求返回的数据,这时出现展示的BUG(最后点击B选项,而展示的确实A选项接口的数据)
解决方法是用一个数组A记录每一次操作中发送的请求,当队列的最后一个请求完成,页面取最后一个请求返回的数据,并清空数组A