##如何使用Promise来封装wx.request
在根目录中创建一个http文件,在里面依次添加api.js,fetch.js以及http.js
代码如下:
举例:
fetch.js:
/fetch.js
module.exports=(url,data,method)=>{
wx.showLoading()
let p=new Promise((resolve,reject)=>{
wx.request({
url: url,
data:data,
method:method,
success(res){
resolve(res)
wx.hideLoading()
},
fail(err){
reject(err)
}
})
})
return p
}
api.js:
// 用来导出接口中不同的效果
module.exports={
swiper:'/home/swiperdata',
fen:"/home/catitems",
floor:"/home/floordata",
nav:"/categories",
list:"/goods/search",
detail:"/goods/detail",
sou:"/goods/qsearch"
}
http.js:
//通过引入api.js以及fetch.js 来将接口中的data以及method方法打包成函数暴漏的页面当中
let p =require('./fetch')
let api=require('./api')
let baseUrl="https://api-hmugo-web.itheima.net/api/public/v1"
function banner(){
return p(baseUrl+api.swiper,{},"get")
}
function fen(){
return p(baseUrl+api.fen,{},"get")
}
function floor(){
return p(baseUrl+api.floor,{},"get")
}
function nav(){
return p(baseUrl+api.nav,{},"get")
}
function list(data){
return p(baseUrl+api.list,data,"get")
}
function detail(id){
return p(baseUrl+api.detail,{goods_id:id},"get")
}
function sou(key){
return p(baseUrl+api.sou,{query:key},"get")
}
module.exports={
banner,
fen,
floor,
nav,
list,
detail,
sou,
}
然后需要在全局的app.js中导入http.js 这样就可以全局的使用我们封装的wx.request,在每个需要引入的页面中的js 通过let app=new getapp(); 来实现使用