promise封装微信request方法

理论

异步 API 返回 Promise:Promise其实是一个构造函数,它有resolve,reject,race等静态方法;它的原型(prototype)上有then,catch方法,因此只要作为Promise的实例,都可以共享并调用Promise.prototype上面的方法(then,catch)。

promise语法:new Promise(function(resolve,reject){}/*excutor*/);,在实例化Promise时需要传入一个函数excutor(函数)作为参数,并且在Promise构造函数执行时同步执行。excutor函数还有两个参数resolve和reject,其实这两个参数也是函数,在excutor执行时被调用。

Promise的几种状态:pending: 初始状态,成功或失败状态。fulfilled: 意味着操作成功完成。rejected: 意味着操作失败。

当我们在excutor函数中调用resolve方法时,Promise的状态就变成fulfilled,即操作成功状态

  • Promise.prototype上面的then和catch方法:当Promise状态为fullfilled状态时执行then方法里的操作,注意了,then方法里面有两个参数onfulfilled(Promise为fulfilled状态时执行) 和onrejected(Promise为rejected状态时执行):

例子说明

在这里插入图片描述

  • 看了上面的实例,我相信应该也很容易理解reject方法了,就是调用reject方法后,Promise状态变为rejected,即操作失败状态,此时执行then方法里面onrejected操作,上面我们提到了then方法有两个参数,一种是Promise状态为fulfilled时执行(onfullfilled),一种是Promise状态为rejected时执行(onrejected):
    在这里插入图片描述

实现

/**
 * 封封微信的的request,默认是GET方式获取
 */
let count=0;
function utilrequest(url, data = {}, method = "GET",header={} ) {
    count++
    wx.showLoading({
        title: '加载中...',
    });
    return new Promise(function (resolve, reject) {
        wx.request({
            url: url,
            data: data,
            method: method,
            header:header,
            success: function (res) {
                wx.hideLoading();
                if (res.statusCode == 200) {
                    resolve(res);
                } else {
                    reject(res.errMsg);
                }

            },
            fail: function (err) {
                // 失败操作
                reject(err)
            },
            // 不管成功还是失败,都要关闭加载图标,多次数据加载的时候,只需要在最后的数据加载完成后再关闭窗口
            complete(){
                count--
                if(count===0){
                    wx.hideLoading()
                }
            }
        })
    });
}
module.exports = {
    utilrequest:utilrequest
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值