小程序request封裝

import {config} from "../config.js"

var hasClick = false ;

class HTTP{
  request({url,data={},method='GET'}){
    return new Promise((resolve, reject)=>{
      this._request(url, resolve, reject, data,method )
    })
  }

 _request(url,resolve,reject,data={},method='GET'){

   if (hasClick){
     return ;
   }

   hasClick = true ;

   wx.showLoading({
     title: '加載中...',
     mask: true
   })

   let token = wx.getStorageSync("token");

   let header = {
     'content-type': 'application/json',
   }
   if (token) {
     header.Authorization = 'Bearer ' + token
   }

   wx.request({
     url: config.api_url+url,
     method:method,
     data:data,
     header: header,
     success:(res)=>{
       if (res.statusCode && res.statusCode != 200) {
         reject()
         this._show_error('服務器 ' + res.statusCode + ' 錯誤')
         return 
       }

       if (res.data && res.data.code != 200) {
         reject()
         this._show_error(res.data.msg)
         return 
       }

       resolve(res.data.data)
     },
     fail:(err)=>{
       reject()
       this._show_error('異常')
     },
     complete:()=>{
       wx.hideLoading()
       hasClick=false
     }

   })
 }

 _show_error(msg){
   wx.showToast({
     title: msg,
     icon:"none",
     duration:2000
   })
 }
}

export {HTTP} ;

 

config.js

const config={
  api_url:"http://myyqapi.com/",
  appkey:""
}
export {config}

封裝model

import {HTTP} from '../utils/http.js'
class Index extends HTTP{
  getHot(){
    return this.request({
      url:"pc_v1/demo/hot"
    })
  }
}
export {Index}

 

使用

index.getHot().then(
      res=>{
        console.log(res)
        console.log("11111")
      }
    ).then(
      res=>{
        console.log("222222")
      }
    ).then(
      res => {
        console.log("33333")
      }
    )
    .catch(
      err=>{
        console.log(err)
      }
    )

 

發佈了206 篇原創文章 · 獲贊 7 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章