小程序 - 封装promise异步调用 wx.request(1.5)

版权声明:尊重原创! 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)
        });
    },
})

猜你喜欢

转载自blog.csdn.net/weixin_42675488/article/details/89361356