场景:
不断加载的图片列表(发送图片列表请求),每次从后台传回offset,下次请求带上传回的offset。
BUG发现中:
快速滑动加载更多时,同一个offset会发送两次。
原因分析:
offset是后端返回后异步setData(微信小程序写法)到data(store)中的,异步存储没有结束就读取offset发送请求获取的是上次的offset。
解决对策 —— 上锁?:
let isRequesting = false;
getPhotoList: function(that){
if(isRequesting){
return;
}
isRequesting = true;
services.fetchPhotoList({
// ... some other values
offset: that.data.offset
}, (res) => {
if(res && res.data && res.data.list && res.data.list.length){
that.setData({
// ... setData
}, () => {
isRequesting = false;
});
} else {
that.setData({
noMore: true
}, () => {
isRequesting = false;
})
}
})
}