自用获取数据函数封装

225 阅读1分钟

本函数根据个人项目接口数据封装自用,不具备普遍性,只是为了简化自己在项目中的操作。换句话说,这几行代码只适合借鉴学习,不适合ctrl+c&ctrl+v

    //封装获取数据上拉加载函数
const getList = (requestFun, page,listObj) => {
  //加入promise,可以做除了常规操作以为的操作
  return new Promise((resolve,reject)=>{
    if (page.data.requestFlag)
      return
    let list = `${listObj}` || 'list'
    page.setData({
      requestFlag: true
    })
    requestFun.then(res => {
      resolve(res)
      if (res.data.data) {
        page.setData({
          [`${list}`]: [...page.data[`${list}`], ...res.data.data]
        })
        page.data.pageNum++
        page.data.pages = res.data.pages
      }
      page.setData({
        requestFlag: false
      })
      if (page.data.pageNum > page.data.pages) {
        page.data.requestFlag = true
        page.setData({
          more: true,
          moreText: res.data.total > 0 ? '共 ' + res.data.total + ' 条数据已全部加载' : '暂无数据'
        })
      }
    })
      .catch(err => {
        page.setData({
          requestFlag: false
        })
        reject(err)
      })
  })
}
//刷新数据,配合上面的函数getList使用
const refresh=(page,obj)=>{
  page.data.pages = 1
  page.data.pageNum = 1
  page.data.requestFlag = false
  page.setData({
    list: [],
    more: false
  })
}