国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

微信小程序封裝的HTTP請求示例【附升級版】

2019-11-19 11:36:11
字體:
來源:轉載
供稿:網友

本文實例講述了微信小程序封裝的HTTP請求。分享給大家供大家參考,具體如下:

微信小程序里自己封裝了請求的函數,但幾乎每個頁面都要用到,所以為什么更方便的調用,再一次進行封裝。

在app.js里面定義個全局對象,這樣想要用到該函數,只需要在該頁面的js文件里面,請求一個app實例。

廢話不多說,先上代碼:

//全局對象httpClienthttpClient:{  request:function(method,url,data){    //返回一個promise實例    return new Promise( (resolve,reject)=>{       wx.request({        url:url,        data:data,        mehtod:method,        success:function(res){          resolve(res)        },        fail:function(res){          reject(res);        },        complete:function(){          console.log('complete');        }      })    })  }  //get方法:用來獲取數據  get:function( url ) {    return this.request('GET',url);  },  //post方法:用來更新數據  post:function( url,data) {    resturn this.request('POST',url,data);  },  //put方法  put:function(url,data){    return this.request('PUT', url, data);  },  //delete方法  delete:function(url,data){    return this.request('DELETE', url, data);  }

在需要請求的頁面調用:

例如:登錄頁面login.js

//獲取app實例,從而調用全局對象的函數var app=getApp();login:function(){  var url='http:xxxxx/login';  var data={    userName:'xxxxx',    passwd:'xxxxxx'  }  app.httpClient.post( url,data )    .then( res=>{console.log("請求成功時調用該函數")})    .catch(res=>{console.log("請求失敗時調用該函數")})}//為了更好的閱讀,也可以將回調函數,定義在外面//這樣loginSuccess:function(){  console.log("請求成功時調用該函數")},loginFail:function(){  console.log("請求失敗時調用該函數")},login:function(){  var self=this;  var url='http:xxxxx/login';  var data={    userName:'xxxxx',    passwd:'xxxxxx'  }  app.httpClient.post( url,data )    .then( res=>self.loginSuccess())    .catch(res=>self.loginFail())}

是不是簡潔多了。。。。

附:升級版

上代碼

// 該函數怎么寫,需要跟后端人員協商返回的格式function getErrorMsgByErrorNo(error_no) { let error_msg; switch (error_no) {  case 100: error_msg = '操作失敗,請稍后再試!'; break;  default: error_msg = '網絡錯誤,請稍后再試!'; break; } return error_msg;}function handleData(res) { if (res.data.success) {  if (typeof (res.data.body) === 'string') {   return [];  } else if (Array.isArray(res.data.body) === false) {   const _arr = [];   _arr.push(res.data.body);   return _arr;  } else {   return res.data.body;  } } else {  if (res.data.error_no) {   return {    error_no: res.data.error_no,    error_msg: getErrorMsgByErrorNo(res.data.error_no)   };  } else {   return {    error_no: 123456,    error_msg: '服務器維護中,請稍后!'   };  } }}const httpClient = { request: function (method, url, data) {  return new Promise((resolve, reject) => {   wx.request({    url: url,    data: data,    method: method,    success: function (res) {     resolve(handleData(res))    },    fail: function (err) {     console.log('request fail ', err);     resolve({      error_no: 100,      error_msg: getErrorMsgByErrorNo(100)     })    },    complete: function (res) {     console.log("request completed!");    }   })  }); }, get: function (url) {  return this.request('GET', url); }, post: function (url, data) {  return this.request('POST', url, data); }, put: function (url, data) {  return this.request('PUT', url, data); }, delete: function (url, data) {  return this.request('DELETE', url, data); },};module.exports = httpClient;

使用

function getMyselfData() { const _Url= urls.url; return httpClient.get(_Url);} getData() {  let resultsData = this.getMyselfData();  resultsData.then((res) => {   if (res.error_no) {   // 只要有error_no就說明請求出現了錯誤    this.toast.showToast({     type: 'fail',     title: res.error_msg,    })   } else {    this.setData({     journeyList: res.data    })   }  }); },

希望本文所述對大家微信小程序開發有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洛宁县| 拉孜县| 宝坻区| 荆州市| 营山县| 柳江县| 大竹县| 乌兰察布市| 周至县| 茂名市| 民权县| 永平县| 和林格尔县| 泸西县| 新蔡县| 乳源| 米泉市| 蒙城县| 松江区| 仁布县| 望奎县| 水城县| 五莲县| 吴堡县| 棋牌| 咸宁市| 贺兰县| 宕昌县| 郑州市| 讷河市| 修武县| 宝鸡市| 延川县| 漳浦县| 内黄县| 怀安县| 盐边县| 吉木萨尔县| 林口县| 盐城市| 当涂县|