使用promise封裝wx.request()
1.目錄結構
首先在env目錄下建立index.js,裡面配置開發環境並將其匯出
//配置不同的開發環境
module.exports={
//開發環境
Dev:{
baseUrl:'http://123.207.32.32:8000/api/h8', //開發環境的介面
},
//測試環境
Test:{
baseUrl:'http://www.test.com'
},
//生產環境
Prod:{
baseUrl:'http://www.api.douban.com'
}
}
在config.js中統一定義所有的請求url地址,方便維護和管理
//定義請求路徑並丟擲物件
module.exports={
"banner":"/home/multidata",
"list":"/home/list"
}
在request.js中丟擲一個request函式,該函式返回值是一個promise物件
//封裝wx.request()網路模組
//丟擲一個函式 這個函式會返回一個promise物件
module.exports=(url,method,data)=>{
let p=new Promise((resolve,reject)=>{
wx.request({
url: url, //請求路徑
method:method, //請求方式
data:Object.assign({},data), //請求引數,使用淺拷貝
header:{"Content":"application/text"}, //請求頭,預設引數
success(res){ //成功的回撥函式
resolve(res)
},
fail(err){ //失敗的回撥
reject(err)
}
})
})
return p;
}
入口函式index,這裡是入口檔案,要做到別人一看就知道這個資料夾是幹嘛用的以及怎麼使用
//入口函式,引入環境變數,路徑和方法在此處統一呼叫
const Env=require('../env/index')
const Url=require('./config')
const Request=require('./request')
console.log(Request);
//確定當前環境
let baseUrl=Evn.Dev.baseUrl
//如果介面需要token鑑權,獲取token
let token=wx.getStorageSync('token') //獲取本地儲存的token
//請求的函式
//banner請求
function banner(){
//呼叫該方法,傳遞路徑(環境字首+路徑),方式,引數 函式結果會返回一個promise物件
return Request(baseUrl+Url.banner,'get',{})
}
//xxx請求 直接照搬就行
//將封裝好的方法丟擲
module.exports={
banner
}
最後一步咯,在全域性app.js中匯入index,註冊到根元件
//app.js
//引入http請求模組
const http=require('./http/index')
//直接在App方法裡簡單粗暴掛載一個http方法,掛上去就能用
App({
http,
})
如何使用
//哪個檔案要傳送請求,就在頭部引入app.js裡面app這個全域性物件
const app=getApp()
//使用方法簡單粗暴,括號內可以傳引數
app.http.banner().then(res=>{
console.log(res)
})
大概一看,和vue封裝axios的思路基本一致——
單獨定義路徑和請求函式,統一在index.js中呼叫,並將方法掛載到全域性物件。
以後在修改時只需要修改對應的請求路徑或新增新的請求方法。
相關文章
- promise封裝wx.request()Promise封裝
- 六九、ajax,fetch,axios,wx.request封裝iOS封裝
- jsonp promise 封裝JSONPromise封裝
- 微信小程式 wx.request 的封裝微信小程式封裝
- 小程式wx.request()方法簡單封裝封裝
- 小程式 二次封裝wx.request方法封裝
- 使用Promise封裝fetch庫(增刪改查)Promise封裝
- 微信小程式wx.request的簡單封裝微信小程式封裝
- 分享:用promise封裝ajaxPromise封裝
- 易理解的Promise封裝Promise封裝
- 用promise封裝一個ajaxPromise封裝
- 小程式非同步介面封裝,使用Promise,改良後的。非同步封裝Promise
- 應用Promise封裝Ajax實踐Promise封裝
- 小程式API進行promise封裝APIPromise封裝
- 小程式封裝wx.request請求並建立介面管理檔案封裝
- 使用promise封裝jquery的ajax來實現async和await方式Promise封裝jQueryAI
- 原生es5封裝的Promise物件封裝Promise物件
- 基於小程式請求介面 wx.request 封裝的類 axios 請求封裝iOS
- 原生es6封裝一個Promise物件封裝Promise物件
- 基於Promise實現對Ajax的簡單封裝Promise封裝
- ES6(四)用Promise封裝一下IndexedDBPromise封裝Index
- ES6 Promise 應用: 回撥函式方法封裝成 Promise + async/await 同步化Promise函式封裝AI
- 使用async await 封裝 axiosAI封裝iOS
- ToolBar專案封裝使用封裝
- Vue Axios 的封裝使用VueiOS封裝
- iOS 封裝.framework 以及使用iOS封裝Framework
- Java 封裝 SDK 以及使用Java封裝
- ES6中Promise 承諾物件封裝非同步操作解析Promise物件封裝非同步
- 使用ts封裝一個ajax封裝
- RecyclerView使用封裝與優化View封裝優化
- laravel Es的封裝與使用Laravel封裝
- vue中使用axios的封裝VueiOS封裝
- lavarel 8 ES封裝及使用封裝
- Android中Retrofit的封裝使用Android封裝
- 【封裝那些事】 缺失封裝封裝
- vue中axios的使用與封裝VueiOS封裝
- 使用 js 修飾器封裝 axiosJS封裝iOS
- 如何使用JQ封裝輪播圖封裝