小程序封装wx.request思路

新建文件request.js,将请求的封装方法写在里面

//var hasClick = false;

const http = (method, url, data, response, error) => {
  if (hasClick) {
    return
  }
 // hasClick = true

  wx.showLoading({
    title: '加载中...',
    mask: true 
  })
  
  wx.request({
    method: method,
    url: url,
    header: { 
      'content-type': 'application/json'
      // 'token': wx.getStorageSync("token")
     },
    data:data,
    success: res => {
      return response(res)
    },
    fail: err => {
      return error(err)
    },
    complete: info => {
      wx.hideLoading();
     // hasClick = false
    }
  })
}

module.exports = {
  _get: (url, data, response, error) => http('GET', url, data, response, error),
  _post: (url, data, response, error) => http('POST', url, data, response, error),
}
  • 当发起请求的时候,界面出现“加载中...”的Loading界面,请求完成后,取消加载loading。设置加载loading的mask属性为true,可以显示透明蒙层,防止触摸穿透。

页面调用,在页面的js文件中引用

import request from '../../request/request.js'

request(){
  let data = {
    params1:params1, //参数1
    params2:params2, //参数2
  }
    request._get('http://192.168.1.30:8085/banner', data , res => {
      console.log(res)
    },err => {
      console.log(err)
    })
},
  • 如果没有请求参数,把data换成null就好

小程序默认请求超时时间是60秒,等待时间有点长,我们可以在app.json中进行设置

{
//...
"networkTimeout": {
    "request": 5000
  }
}

每个页面请求的时候都要引用封装,还是有点麻烦。注意到小程序页面都可以获取app.js的实例(const app = getApp()),所以可以改一下封装,将封装方法直接暴露出去,在app.js中再配置POST/GET等请求;请求的url也可以抽出来写在一起,方便查找和修改。自己试一下吧~

posted @ 2020-08-08 20:57  点击收藏  阅读(455)  评论(0)    收藏  举报