版权声明:尊重原创! https://blog.csdn.net/weixin_42675488/article/details/89361356
文献: | |
---|---|
1、阮一峰 promise 介绍(es6); | |
2、小程序中 Promise解决异步执行的问题; | |
3、可以细看的封装小程序的Request请求(Promise 复杂); |
Java是单进程执行的,同步操作会对程序的执行进行阻塞处理。在网页中,我们使用Ajax的方式向服务器端做异步数据请求。
Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。
现在小程序可以不用引入Promise的脚本,直接使用;小程序Promise异步请求数据(简单)
- 比较简单的调用:
http.js:
//异步请求:
const baseURL = "http://192.168.1.118:8088";
function basePOST(url, params) {
let promise = new Promise(function (resolve, reject) {
wx.request({
url: baseURL + url,
data: params,
method: 'POST',
header: { 'Content-Type': 'application/json' },
success: function (res) {
resolve(res);
if (res.data.code == 200) { //判断后台返回的状态码,若是成功,返回resolve()
return resolve(res)
} else { //若是返回错误的状态码,弹窗提示失败信息,并附带错误代码,以便快速定位问题所在
wx.showModal({
title: res.data.msg,
content: "错误码:" + res.data.code,
showCancel: false,
})
}
},
fail: function (res) {
wx.showToast({
title: '网络出错,请刷新重试',
icon: 'none',
duration: 1000
});
console.log('网络出错')
},
dataType: "json" //传输的数据类型,text / json
})
});
return promise
}
//发布对应的接口,让函数出去
module.exports = {
basePOST: basePOST
}
app.js全局函数
const app = getApp();
const http = require('utils/http.js');
App({
onShow: function () {
},
//调用函数
network: {
basePOST: http.basePOST
}
})
两种方式调用:
// 不经过app.js 方法:
const network = require('../../../utils/http.js')
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
network.basePOST('/hall/findHallPackets', {
'pageNo': 1
}).then((res) => {
console.log(res.data.code)
});
},
// 经过app.js方法:
const app = new getApp();
page({
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
app.network.basePOST('/hall/findHallPackets', {
'pageNo': 1
}).then((res) => {
console.log(res.data.code)
});
},
})