回调函数封装http之调用
1、创建http.js
文件路径:miniprogram\utils\http.js
内容:
import {config} from '../config.js'
const tips = {
1: '抱歉,出现了错误'
}
class HTTP{
request(params){
if(!params.method){
params.method ="GET"
}
wx.request({
url: config.api_base_url+params.url,
method: params.method,
header: params.header,
data: params.data,
success:(res)=>{
let code = res.statusCode.toString()
//请求返回状态首字为2的表示成功;
if(code.startsWith('2')){
//如果params有success不为空,则执行后面的语句;
params.success && params.success(res.data)
}
else{
let error_code = res.data.error_code
this._show_error(error_code)
}
},
fail:(err)=>{
this._show_error(1)
}
})
} // end request;
//错误提示
_show_error(error_code){
if(!error_code){
error_code =1
}
const tip = tips[error_code]
wx.showToast({
title: tip?tip:tips[1],
icon: 'none',
duration: 2000
})
}
}
export {HTTP}
2、封装业务逻辑之models
文件路径:miniprogram\models\init.js
文件内容:
import { HTTP } from '../utils/http.js'
class FirstModel extends HTTP {
//传递的参数为回调函数
getAreas(sCallback){
let store = wx.getStorageSync("AREA")
if(!store)
{
this.request({
url: '/domain/',
success: (res) => {
sCallback(res)
wx.setStorageSync("AREA", res)
}
})
}
else
{
sCallback(store)
}
} // getArea end;
//首页根据会议地获取相应会议室信息;
getDefaultRoom(fun_callback,area){
this.request({
url: '/mee?area=' + area,
success: (res)=>{
fun_callback(res)
}
})
}
//根据会议地获取相应会议室列表;
getRoom_ByArea(fun_callback,area){
this.request({
url: '/room/?area=' + area,
success: (res)=>{
fun_callback(res)
}
})
}
//获取部分信息
getDeparts(fun_callback){
let store = wx.getStorageSync("DEPART")
if(!store)
{
this.request({
url: '/depart/',
success: (res) => {
fun_callback(res)
wx.setStorageSync("DEPART", res)
}
})
}
else
{
fun_callback(store)
}
}
} // class end ;
export { FirstModel}
3、回调函数在小程序js的应用
3.1 引入文件
import { FirstModel } from '../../models/Init.js'
3.2 实例化对象
const firstModel = new FirstModel()
3.3 回调函数应用
//数据后台初始化数据;
//ES6语法
initAreas(){
firstModel.getAreas(res=>{
res.forEach((item)=>{
this.setData({
areas: this.data.areas.concat(item.area)
})
})
})
},
//根据会议地+会议室+月份获取数据
getmeetlist(v_area,v_room,v_month){
var that = this
that.setData({
items: []
})
//优化代码,使用扩展运算符,使代码优雅简洁
meetModel.getmeetlist(res =>{
this.setData({
items: this.data.items.concat(...res),
isTouchMove: false
})
}, v_area, v_room, v_month)
},