现在有这么一个场景,一个页面同时具有上拉加载和下拉刷新。
因为网速问题,先执行了一次①上拉加载,加载的数据还没有请求到;就进行了一次②下拉刷新页面。
结果②下拉刷新的数据先请求到,①上拉加载请求的数据后请求到,①上拉加载的数据拼接到了②下拉刷新后的数据后。导致数据错误。
请问能不能在下拉刷新页面时,清除之前的网络请求?
或者有没有什么可行的解决办法?
/**加载更多连接新旧数组
* @param {'this'} that
* @param {string} listStr 数组名字
* @param {array} list 之前的数组
* @param {array} _list 新数组
* @param {function|false} fn1 _list处理函数
* @param {function|false} fn2 _list处理函数2
*/
const loadConcat = function (that, listStr, list, _list, fn1 = false, fn2 = false) {
if (_list.length > 0) {
if (fn1) fn1(_list);
if (fn2) fn2(_list);
list = list.concat(_list)
that.setData({
[listStr]: list
})
} else {
if (list.length > 0) {
Tip(that, false, '2', '没有更多了');
}
}
return list;
};
/**通过条件检索用户意向
*/
searchUserInvestmentList: function () {
let that = this;
let postData = {
pageNo: this.data.pageNo,
pageSize: this.data.pageSize,
}
//写的一个promise的wx.request
this.getData(this, App.api.searchUserInvestmentList, 'investment', postData).then((res) => {
let investmentList = that.data.investmentList;
let _investmentList = res.data.investList;
//handleIntentDesc是处理数据的方法
loadConcat(this, 'investmentList', investmentList, _investmentList, handleIntentDesc);
if (this.data.pageNo == 1) {
wx.setStorageSync('oldInvestmentList', handleIntentDesc(res.data.investList))
}
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.setData({
oldInvestmentList:wx.getStorageSync('oldInvestmentList'),
})
this.searchUserInvestmentList();
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
this.setData({
oldInvestmentList:wx.getStorageSync('oldInvestmentList'),
goTop:0,
investmentList: [],
pageNo: 1
});
this.searchUserInvestmentList();
wx.stopPullDownRefresh();
},
https://developers.weixin.qq.com/miniprogram/dev/api/RequestTask.html
感谢,我封装的请求方法用这个 requestTask.abort() 太麻烦
我让他 pageNo==1 的时候,被连接数组=空;不为1时就正常连接。
下拉发送请求前创建个页面全局下拉状态isPullDown为true,下拉获取到数据后更改状态为false,上拉同理创建个上拉状态,isPullUp
下拉时判断一下当前状态,根据不同的状态执行不同的操作
我让他 pageNo==1 的时候,被连接数组=空;不为1时就正常连接。
不知道为什么,代码片段发布不了
https://developers.weixin.qq.com/miniprogram/dev/api/RequestTask.html
这个可以吗
漏了一张
感谢,我封装的请求方法用这个 requestTask.abort() 太麻烦
我让他 pageNo==1 的时候,被连接数组=空;不为1时就正常连接。