亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解微信小程序網(wǎng)絡(luò)請求接口封裝實(shí)例

 更新時(shí)間:2019年05月02日 08:26:45   作者:Acoe  
這篇文章主要介紹了微信小程序網(wǎng)絡(luò)請求接口封裝,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

網(wǎng)絡(luò)請求封裝實(shí)例

實(shí)現(xiàn)定制要求和方便調(diào)用,對微信小程序的網(wǎng)絡(luò)請求接口進(jìn)行了封裝

  1. 封裝位置:app.js,方便全局調(diào)用
  2. 實(shí)現(xiàn)方法調(diào)用,只用關(guān)注接口url和入?yún)?/li>
  3. 默認(rèn)和自定義的請求成功、失敗和完成的回調(diào)處理
  4. 可設(shè)置請求失敗自動重新請求的次數(shù)
  5. 可以防止重復(fù)提交
  6. 每個(gè)請求設(shè)定requestCode

代碼

直接將這個(gè)方法放在了app.js中

/**
  * 接口公共訪問方法
  * @param {Object} urlPath 訪問路徑
  * @param {Object} params 訪問參數(shù)(json格式)
  * @param {Object} requestCode 訪問碼,返回處理使用
  * @param {Object} onSuccess 成功回調(diào)
  * @param {Object} onErrorBefore 失敗回調(diào)
  * @param {Object} onComplete 請求完成(不管成功或失?。┗卣{(diào)
  * @param {Object} isVerify 是否驗(yàn)證重復(fù)提交
  * @param {Object} requestType 請求類型(默認(rèn)POST)
  * @param {Object} retry 訪問失敗重新請求次數(shù)(默認(rèn)1次)
  */
 webCall: function (urlPath, params, requestCode, onSuccess, onErrorBefore, onComplete, isVerify, requestType, retry) {
  var params = arguments[1] ? arguments[1] : {};
  //var requestCode = arguments[2] ? arguments[2] : 1;
  var onSuccess = arguments[3] ? arguments[3] : function () { };
  var onErrorBefore = arguments[4] ? arguments[4] : this.onError;
  var onComplete = arguments[5] ? arguments[5] : this.onComplete;
  var isVerify = arguments[6] ? arguments[6] : false;
  var requestType = arguments[7] ? arguments[7] : "POST";
  var retry = arguments[8] ? arguments[8] : 1;
  var that = this;

  //防止重復(fù)提交,相同請求間隔時(shí)間不能小于500毫秒
  var nowTime = new Date().getTime();
  if (this.requestCount[urlPath] && (nowTime - this.requestCount[urlPath]) < 500) {
   return;
  }
  this.requestCount[urlPath] = nowTime;
  //是否驗(yàn)證重復(fù)提交
  if (isVerify) {
   if (this.verifyCount[urlPath]) {
    return;
   }
   this.verifyCount[urlPath] = true; //重復(fù)驗(yàn)證開關(guān)開啟
  }

  console.log("發(fā)起網(wǎng)絡(luò)請求, 路徑:" + (that.apiHost + urlPath) + ", 參數(shù):" + JSON.stringify(params));
  wx.request({
   url: that.apiHost + urlPath,
   data: params,
   method: requestType, // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
   header: {
    'content-type': requestType == 'POST' ?
     'application/x-www-form-urlencoded' : 'application/json'
   }, // 設(shè)置請求的 header
   success: function (res) {
    console.log("返回結(jié)果:" + JSON.stringify(res.data));
    if (res.data) {
     if (res.data.statusCode == 200) { //訪問成功
      onSuccess(res.data, requestCode);
     } else if (res.data.statusCode == 300000001) { // 未登錄
      that.isLogin = false;
      onErrorBefore(0, res.data.message, requestCode);
     } else {
      onErrorBefore(0, res.data.message == null ? "請求失敗 , 請重試" : res.data.message, requestCode);
     }
    } else {
     onErrorBefore(0, "請求失敗 , 請重試", requestCode);
    }
   },
   fail: function (res) {
    retry--;
    console.log("網(wǎng)絡(luò)訪問失?。? + JSON.stringify(res));
    if (retry > 0) return that.webCall(urlPath, params, requestCode, onSuccess, onErrorBefore, onComplete, requestType, retry);
   },
   complete: function (res) {
    onComplete(requestCode);
    //請求完成后,2秒后重復(fù)驗(yàn)證的開關(guān)關(guān)閉
    if (isVerify) {
     setTimeout(function () {
      that.verifyCount[urlPath] = false;
     }, 2000);
    }
   }
  })
 }

上面的verifyCount是放在data中的數(shù)組,apiHost 是放在js最外層的接口服務(wù)器地址,方便隨時(shí)開發(fā)、測試環(huán)境。

這個(gè)方法也是必不可少的

 complete: function (res) {
    onComplete(requestCode);
    //請求完成后,2秒后重復(fù)驗(yàn)證的開關(guān)關(guān)閉
    if (isVerify) {
     setTimeout(function () {
      that.verifyCount[urlPath] = false;
     }, 2000);
    }
   }
  })

調(diào)用示范

請求:

 // 請求 home banner 數(shù)據(jù)
  wx.showNavigationBarLoading();
  app.webCall("/app/homeBanner", {}, QUERY_BANNER, this.onSuccess, this.onErrorBefore, this.onComplete);

請求成功的回調(diào)處理:

 /**
  * 接口訪問成功返回
  * @param {Object} data
  * @param {Object} requestCode
  */
 onSuccess: function (data, requestCode) {
   var that = this;
  switch (requestCode) {
   case QUERY_BANNER:
    that.setData({ bannerData: (data ? data.data : []) });
    break;
  }

QUERY_BANNER是放在js最外層的常量,用于接口訪問完成后的回調(diào)方法來區(qū)分請求的接口是哪個(gè)。

請求完成的處理:

/**
  * 接口訪問完成
  * @param {Object} resultCode
  */
 onComplete: function (resultCode) {
  console.log("home onComplete1");

  if (--mCurrentRequestNums <= 0) {
   wx.hideNavigationBarLoading();
  }
 }

mCurrentRequestNums 是放在js最外層的變量,表示發(fā)起請求的數(shù)量,用于多個(gè)接口同時(shí)被調(diào)用,并希望在全部請求結(jié)束后關(guān)閉標(biāo)題欄加載動畫時(shí)用。

以上所述是小編給大家介紹的微信小程序網(wǎng)絡(luò)請求接口封裝詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 微信小程序?qū)崿F(xiàn)登錄注冊功能

    微信小程序?qū)崿F(xiàn)登錄注冊功能

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)登錄注冊功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • JavaScript中的淺拷貝和深拷貝原理與實(shí)現(xiàn)淺析

    JavaScript中的淺拷貝和深拷貝原理與實(shí)現(xiàn)淺析

    這篇文章主要介紹了JavaScript中的淺拷貝和深拷貝原理與實(shí)現(xiàn),JavaScript 中的淺拷貝和深拷貝指的是在復(fù)制對象(包括對象、數(shù)組等)時(shí),是否只復(fù)制對象的引用地址或者在復(fù)制時(shí)創(chuàng)建一個(gè)新的對象
    2023-04-04
  • 淺談原生JS中的延遲腳本和異步腳本

    淺談原生JS中的延遲腳本和異步腳本

    下面小編就為大家?guī)硪黄獪\談原生JS中的延遲腳本和異步腳本。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 微信小程序如何保證每個(gè)頁面都已經(jīng)登陸詳解

    微信小程序如何保證每個(gè)頁面都已經(jīng)登陸詳解

    前段時(shí)間發(fā)布了一個(gè)微信小程序的簡單登錄,但遇到一個(gè)問題,怎么確保用戶每個(gè)頁面都已經(jīng)登陸了呢,這篇文章主要給大家介紹了關(guān)于微信小程序如何保證每個(gè)頁面都已經(jīng)登陸的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • js實(shí)現(xiàn)ArrayList功能附實(shí)例代碼

    js實(shí)現(xiàn)ArrayList功能附實(shí)例代碼

    ArrayList功能想必大家都有所了解吧,本文使用js實(shí)現(xiàn)ArrayList功能并附實(shí)例代碼,想學(xué)習(xí)的朋友可以看看
    2014-10-10
  • JS 頁面計(jì)時(shí)器示例代碼

    JS 頁面計(jì)時(shí)器示例代碼

    計(jì)時(shí)器效果想必大家都見到過吧,其實(shí)使用js可以很輕松的實(shí)現(xiàn),下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下
    2013-10-10
  • JS使用正則表達(dá)式過濾多個(gè)詞語并替換為相同長度星號的方法

    JS使用正則表達(dá)式過濾多個(gè)詞語并替換為相同長度星號的方法

    這篇文章主要介紹了JS使用正則表達(dá)式過濾多個(gè)詞語并替換為相同長度星號的方法,涉及javascript字符串與正則替換操作相關(guān)技巧,需要的朋友可以參考下
    2016-08-08
  • JS實(shí)現(xiàn)探測網(wǎng)站鏈接的方法【測試可用】

    JS實(shí)現(xiàn)探測網(wǎng)站鏈接的方法【測試可用】

    這篇文章主要介紹了JS實(shí)現(xiàn)探測網(wǎng)站鏈接的方法,通過網(wǎng)站返回錯(cuò)誤響應(yīng)觸發(fā)onerror時(shí)間來判斷網(wǎng)站鏈接的可用性,非常簡便實(shí)用,需要的朋友可以參考下
    2016-11-11
  • 微信小程序?qū)崿F(xiàn)的自定義分享功能示例

    微信小程序?qū)崿F(xiàn)的自定義分享功能示例

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)的自定義分享功能,結(jié)合實(shí)例形式分析了微信小程序自定義分享功能的原理與簡單實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-02-02
  • 解決layui表格的表頭不滾動的問題

    解決layui表格的表頭不滾動的問題

    今天小編就為大家分享一篇解決layui表格的表頭不滾動的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09

最新評論