收藏
回答

网速慢时 上拉加载请求的数据 会拼接在后进行的下拉刷新请求数据后

现在有这么一个场景,一个页面同时具有上拉加载和下拉刷新。

因为网速问题,先执行了一次①上拉加载,加载的数据还没有请求到;就进行了一次②下拉刷新页面。

结果②下拉刷新的数据先请求到,①上拉加载请求的数据后请求到,①上拉加载的数据拼接到了②下拉刷新后的数据后。导致数据错误。

请问能不能在下拉刷新页面时,清除之前的网络请求?

或者有没有什么可行的解决办法?

/**加载更多连接新旧数组

* @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();

},


最后一次编辑于  2018-12-24
回答关注问题邀请回答
收藏

3 个回答

  • 铭锋科技
    铭锋科技
    2018-12-24

    https://developers.weixin.qq.com/miniprogram/dev/api/RequestTask.html

    2018-12-24
    赞同 5
    回复 1
    • 诗·昂
      诗·昂
      2018-12-24

      感谢,我封装的请求方法用这个 requestTask.abort() 太麻烦

      我让他 pageNo==1 的时候,被连接数组=空;不为1时就正常连接。


      2018-12-24
      回复
  • 赵青山
    赵青山
    2018-12-24

    下拉发送请求前创建个页面全局下拉状态isPullDown为true,下拉获取到数据后更改状态为false,上拉同理创建个上拉状态,isPullUp

    下拉时判断一下当前状态,根据不同的状态执行不同的操作



    2018-12-24
    赞同 1
    回复 1
    • 诗·昂
      诗·昂
      2018-12-24

      我让他 pageNo==1 的时候,被连接数组=空;不为1时就正常连接。

      2018-12-24
      回复
  • 诗·昂
    诗·昂
    2018-12-24




    不知道为什么,代码片段发布不了

    2018-12-24
    赞同
    回复 3
    • 管凯旋
      管凯旋
      2018-12-24

      https://developers.weixin.qq.com/miniprogram/dev/api/RequestTask.html

      这个可以吗

      2018-12-24
      1
      回复
    • 诗·昂
      诗·昂
      2018-12-24

      漏了一张

      2018-12-24
      回复
    • 诗·昂
      诗·昂
      2018-12-24回复管凯旋

      感谢,我封装的请求方法用这个 requestTask.abort() 太麻烦

      我让他 pageNo==1 的时候,被连接数组=空;不为1时就正常连接。


      2018-12-24
      回复