微信小程序開發-斷網從新加載問題

分析

微信小程序目前沒有提供刷新API,因此要本身去記錄當前操做,點擊刷新從新執行一遍

效果

圖片描述

點擊‘從新加載’從新加載頁面小程序

實現

因爲作項目時,頁面渲染離不開接口請求,因此我封裝了一下wx.request來判斷是否斷網,及斷網後記錄本次請求微信小程序

/**
     * obj  request請求參數
     * cb   requrst請求成功回掉
     * page 當前page實例
    **/

    function wxRequest (obj, cb, page, type) {
        var isOne = true
        var cachFn = function () {
            wx.request({
                  url: obj.url,
                  data: obj.data || {},
                  method: obj.method || 'GET',
                  success: function (res) {
                    cb.call(page, res)
                    if (!page.data.isNet) {
                        page.setData({
                            isNet: true
                        })
                    }
                  },
                  // fail執行時當斷網處理
                  fail: function () {
                      // 防止fail 有時會執行兩次,影響渲染
                      if (!isOne) {
                          return
                      }
                    page.setData({
                        isNet: false,
                        isRequested: false
                    })
                    // 記錄本次請求,加載時,執行page實例的reloadFn便可
                      page.reloadFn = wxRequest(obj, cb, page, 1)
                      isOne = false
                  }
            })
        }
    
        if (type) {
            page.isRequested = true
        }
    
        return type ? cachFn : cachFn()
    }

應用

let data = {
      url: '',
      data: {},
      method: ''
    }

    wxTools.wxRequest(data, (res) => {
        // 數據渲染
        this.setData({})
    }, this)

斷網時,執行this.reloadFn就回從新上一次請求,isNet及判斷是否斷網微信

相關文章
相關標籤/搜索