国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序 基于Promise 對 wx.request 封裝處理

這篇具有很好參考價值的文章主要介紹了微信小程序 基于Promise 對 wx.request 封裝處理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

導(dǎo)語:

當(dāng)我們進(jìn)行微信小程序開發(fā)的時候,會經(jīng)常涉及到發(fā)送網(wǎng)絡(luò)請求來進(jìn)行后臺數(shù)據(jù)交互,而在微信小程序中,用來 發(fā)送請求的方法是 wx.request() , 但是由于 wx.request() 方法 不支持 Promise 風(fēng)格的調(diào)用,所以導(dǎo)致 wx.request() 用來發(fā)送異步請求的時候,會觸發(fā)成回調(diào)地獄的表現(xiàn), 以及會產(chǎn)生很多冗余的代碼,會重復(fù)編寫相同的參數(shù)配置項,如果業(yè)務(wù)邏輯再復(fù)雜一點,就會使整個項目代碼可維護(hù)性 降低。
所以本章節(jié),就針對于,上述提出的問題,以及 wx.request() 方法的缺點,來對 wx.request() 進(jìn)行基于 Promise 風(fēng)格封裝。

wx.request 封裝,微信小程序,微信小程序,小程序,javascript,es6,ajax
提示
本章節(jié)由于是基于 Promise 進(jìn)行的封裝,所以如果有小伙伴還不太了解 ES6 的 Promise , 建議先去了解下 Promise相關(guān)的知識,這對我們是很有幫助的。點擊去學(xué)習(xí) Promise

封裝思路:

以簡化不必要的代碼配置項為主要目的,對于公用的請求地址做關(guān)聯(lián)處理,同時為了保證接口封裝后的靈活性,對請求方法的一些配置項采取外部傳入的形式做處理。然后再以 Promise 風(fēng)格進(jìn)行異步處理。

  1. 首先第一步,在我們的項目中的 utils 文件夾下面創(chuàng)建 一個 js 文件(utils 文件夾常用來存放 一些封裝的工具類函數(shù))用來存放我們封裝的 wx.request() 請求方法。
const baseURL = 'https://www.mxnzp.com'; //公用總路徑地址


export const request = (params) => {      //暴露出去一個函數(shù),并且接收一個外部傳入的參數(shù)

  let dataObj = params.data || {};   //拿到傳遞進(jìn)來的參數(shù)
  let headerObj = {                  //這里 可以添加一些請求頭
    'content-type': 'application/json'
  }

  return new Promise((resolve, reject) => {  //通過 Promise 對 wx.request 方法進(jìn)行異步處理。
    wx.request({
      url: baseURL + params.url,      //通過默認(rèn)的請求地址,再加上外部傳入的 具體業(yè)務(wù)地址,組成一個完整的 請求地址。
      method: params.method || "GET",   //外部 業(yè)務(wù)調(diào)用請求時,并傳入 所需的請求方法,如果沒有傳遞請求方法,則默認(rèn)為 GET 請求
      data: dataObj,                  //這里的參數(shù),來自于外部傳入的參數(shù)
      header: headerObj,
      success: res => {
        if (res.statusCode === 200) {
          resolve(res);                      // 請求成功后,調(diào)用 Promise 的回調(diào) resolve() 方法,將參數(shù)返回出去到 Promise 的實例對象身上。
          wx.showToast({
            title: "請求成功",
            icon: "success"
          })
          return;
        } else {
          wx.showToast({
            title: "請求失敗",
            icon: "error"
          })
          reject(res);               //同樣請求失敗后,向 Promise 實例返回出 錯誤的信息
        }
      },
      fail: err => {
        reject(err)            //同樣請求失敗后,向 Promise 實例返回出 錯誤的信息
      }
    })
  })
}
  1. 在項目中,新建一個 api 文件夾,用來做請求接口 模塊化管理,這么做的原因是,雖然我們的請求接口封裝了,但是整個項目中,調(diào)用接口的地方太多了,如果直接在各自頁面中調(diào)用,也會顯得代碼十分的庸雜,所以不同的功能模塊接口調(diào)用,為了避免混淆在一起,建議將api 請求接口 抽離出去,這樣一來,頁面的 js 部分就只著重于對發(fā)起請求前和請求響應(yīng)后的數(shù)據(jù)邏輯處理。這樣的處理,更加的符合 sass 化。

wx.request 封裝,微信小程序,微信小程序,小程序,javascript,es6,ajax
如上圖結(jié)構(gòu),我在 api 文件夾下,我建了一個 index.js 文件,代表著 index 這個模塊是負(fù)責(zé)我整個首頁模塊的接口托管。其他新的模塊在下面繼續(xù)創(chuàng)建文件進(jìn)行托管。

import { request } from "../utils/Encapsulation_api";  //導(dǎo)入我們封裝的請求方法。

//首頁請求接口
export const indexreq = (params) => {     //接收頁面調(diào)用傳遞過來的參數(shù)
  return request({   //調(diào)用請求方法
    url: "/api/history/today",   //傳入請求地址
    method: "GET",               //傳入請求方法
    data: params                 //這里的參數(shù)來自于頁面調(diào)用時,傳過來的參數(shù)  
  })
}
  1. 在頁面中,調(diào)用上述模塊中相應(yīng)的 api 接口,將參數(shù)依次傳遞過去,同時由于我們的請求方法是采用了 Promise 的方式封裝的,所以在頁面邏輯調(diào)用時,還可以 使用 async await 的方式,將異步代碼做同步化處理。
  async getdatas() {
    let parameter = {            //頁面中,收集處理好,要傳遞的參數(shù)
      app_id: "rgihdrm0kslojqvm",
      type: 1,
      app_secret: "WnhrK251TWlUUThqaVFWbG5OeGQwdz09"
    }
    let data = await indexreq(parameter);
    //data 身上就可以直接拿到,請求回來的數(shù)據(jù)。
    if (data.statusCode === 200) {
      wx.showToast({
        title: "首頁加載成功",
        icon: "success"
      })
    }
  },

wx.request 封裝,微信小程序,微信小程序,小程序,javascript,es6,ajax

概述:

當(dāng)看到這里的時候,想必小伙伴們也都體會到了,對請求接口做封裝處理后,確實更具有 “模塊化的編程思想了”,每個模塊的 功能任務(wù),更加的專注化,這樣處理的好處是,發(fā)生異常錯誤時,能夠快速的定位解決,且代碼復(fù)用效率更高。


???♂? 博主座右銘:向陽而生,我還在路上!
——————————————————————————————
??博主想說:將持續(xù)性為社區(qū)輸出自己的資源,同時也見證自己的進(jìn)步!
——————————————————————————————
???♂? 如果都看到這了,博主希望留下你的足跡!【??收藏!??點贊!??評論!】
——————————————————————————————文章來源地址http://www.zghlxwxcb.cn/news/detail-759528.html

到了這里,關(guān)于微信小程序 基于Promise 對 wx.request 封裝處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微信小程序promise封裝

    微信小程序promise封裝

    一. 在utils文件夾內(nèi)創(chuàng)建一個request.js? 寫以下封裝的? wx.request() ?方法 ?二 . 在項目中,新建一個 API 文件夾,用來做請求接口 模塊化管理,這么做的原因是,雖然我們的請求接口封裝了,但是整個項目中,調(diào)用接口的地方太多了,如果直接在各自頁面中調(diào)用,也會顯得代碼

    2024年02月03日
    瀏覽(18)
  • 【微信小程序】使用 wx.request 方法進(jìn)行異步網(wǎng)絡(luò)請求

    在微信小程序中,你可以使用 wx.request 方法進(jìn)行異步網(wǎng)絡(luò)請求,并將獲取到的列表數(shù)據(jù)渲染到 UI 上。 首先,在頁面的 data 中定義一個數(shù)組變量,用于存儲獲取到的列表數(shù)據(jù),例如: 然后,在頁面的生命周期函數(shù) onLoad 或需要觸發(fā)網(wǎng)絡(luò)請求的函數(shù)中,使用 wx.request 方法發(fā)送異

    2024年02月16日
    瀏覽(42)
  • 微信小程序之網(wǎng)絡(luò)數(shù)據(jù)請求 wx:request的簡單使用

    微信小程序之網(wǎng)絡(luò)數(shù)據(jù)請求 wx:request的簡單使用

    出于安全性方面的考慮,小程序官方對 數(shù)據(jù)接口的請求 做出了兩個限制: 只能請求 HTTPS 類型的接口必須將接口的域名添加到信任列表中 . 在自己的微信小程序開發(fā)的后臺管理中添加相應(yīng)的服務(wù)器域名,配置步驟: 登錄微信小程序管理后臺 - 開發(fā) - 開發(fā)設(shè)置 - 服務(wù)器域名

    2024年02月16日
    瀏覽(29)
  • 微信小程序 wx.openSetting打開不顯示,封裝用戶授權(quán)

    微信小程序 wx.openSetting打開不顯示,封裝用戶授權(quán)

    ????????測試功能的時候,想要設(shè)置用戶相冊的功能,打開突然什么也沒有,要么就是顯示“個人信息與權(quán)限使用記錄”,就連打印出來的 console.log(\\\"授權(quán)\\\",res.authSetting) 授權(quán)信息也是空的。 ????????去社區(qū)翻回答都在扯皮,也沒有準(zhǔn)確的說法,只能去看文檔了。 授權(quán)

    2024年02月14日
    瀏覽(160)
  • 微信小程序 封裝request請求

    創(chuàng)建 utils 文件夾后創(chuàng)建 api 文件夾創(chuàng)建 request.js 創(chuàng)建 index.js

    2024年02月15日
    瀏覽(20)
  • 【微信小程序】使用 wx.request 方法來發(fā)送POST網(wǎng)絡(luò)請求,攜帶RequestBody參數(shù)

    在微信小程序中,你可以使用 wx.request 方法來發(fā)送網(wǎng)絡(luò)請求。以下是將上述 Java 代碼轉(zhuǎn)換為微信小程序版本的示例: 在上述代碼中,我們使用 wx.request 方法發(fā)送 POST 請求,并將請求的 URL、請求體數(shù)據(jù)、請求頭等信息進(jìn)行相應(yīng)的設(shè)置。請求成功后,會在回調(diào)函數(shù)的 success 中處

    2024年02月15日
    瀏覽(31)
  • 【uniapp&微信小程序】封裝uni.request()

    【uniapp&微信小程序】封裝uni.request()

    前言 ? ? ? ? 在項目開發(fā)過程中,往往需要對請求進(jìn)行二次封裝,這篇文章將對uni.request()進(jìn)行二次封裝,并實現(xiàn)多個環(huán)境的請求配置,對請求方式,數(shù)據(jù)格式等進(jìn)行封裝,將請求做到最簡化。 一.封裝uni.request() 第一步基于 uni.request() 進(jìn)行二次封裝,集成項目開發(fā)中需要的參

    2024年02月09日
    瀏覽(25)
  • 微信小程序可以通過wx.request()方法發(fā)送text/event-stream請求頭的數(shù)據(jù),并通過wx.onSocketMessage()方法動態(tài)接收數(shù)據(jù)

    具體步驟如下: 1. 使用wx.request()方法發(fā)送text/event-stream請求頭的數(shù)據(jù),示例代碼如下: ``` wx.request({ ? url: \\\'your_url\\\', ? header: { ? ? \\\'Content-Type\\\': \\\'text/event-stream\\\' ? }, ? success: function(res) { ? ? console.log(res) ? } }) ``` 2. 在頁面onLoad()方法中創(chuàng)建WebSocket連接,示例代碼如下: ``` onLoa

    2024年02月05日
    瀏覽(65)
  • uniapp微信小程序封裝網(wǎng)絡(luò)請求 @escook/request-miniprogram

    uniapp微信小程序封裝網(wǎng)絡(luò)請求 @escook/request-miniprogram

    官網(wǎng)地址:https://www.npmjs.com/package/@escook/request-miniprogram 1、下載依賴 2、引入 把下面代碼放到 main.js 3、發(fā)起請求 4、請求成功 可以看到請求成功了,并執(zhí)行了登入成功的邏輯。 每次發(fā)起請求后,都要自己寫if語句判斷請求是否成功,非常麻煩。我們可以修改一下源碼解決這個

    2024年02月10日
    瀏覽(21)
  • 微信小程序-多圖片上傳(基于Promise.all實現(xiàn))

    微信小程序-多圖片上傳(基于Promise.all實現(xiàn))

    如你所了解到的,微信小程序的wx.uploadFile每次僅支持單文件上傳。但在實際的應(yīng)用場景中往往有多文件上傳的需求。因此我打算用Promise.all對wx.uploadFile進(jìn)行一層封裝,讓其能夠?qū)崿F(xiàn)多文件上傳。 說在前面:若你了解Promise.all的用法.那么你一定知道這樣封裝的結(jié)果: 同時上傳多

    2023年04月09日
    瀏覽(89)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包