小程序promise封装request


/**
 * 封装wx.request
 */

import { config } from './config';

const apis = require('./api');
//接口白名单
let whiteList = [
    apis.api.login  
];

class HTTP {
    request({
        url,
        data = {},
        header = config.headers,
        method = 'POST',
        isShowLoading = true,
        title = '加载中',
    }) {


        return new Promise((resolve, reject) => {
            if (whiteList.includes(url)) {
                //白名单内直接触发请求
                this._request(resolve, reject, url, data, header, method, isShowLoading, title)
            } else {
                /**
                 * 白名单外判断是否存在用户
                 */
                let hasUser = wx.getStorageSync('hasUser');
                if (hasUser) {
                    this._request(resolve, reject, url, data, header, method, isShowLoading, title)
                } else {
                    console.error("Error! 请先绑定用户")
                }
            }
        });


    }

    /**
     *
     * 微信网络接口
     */
    _request(resolve, reject, url, data = {}, header = {}, method, isShowLoading, title) {

        //是否需要加载图标
        if (isShowLoading) {
            wx.showLoading({
                title: title,
            })
        }

        wx.request({
            url: config.baseUrl + url,
            method: method,
            data: data,
            header: header,
            success: (res) => {
                console.log(url, '----->', data, '---->', res)
                const code = res.statusCode.toString()
                if (isShowLoading) {
                    wx.hideLoading()
                }
                // 200,绝对的成功,如果是201则捕获错误
                if (code.startsWith('2')) {
                    if (code.endsWith('0')) { // 200,绝对的成功
                        resolve(res.data)
                    } else {
                        reject(res)
                    }
                } else if (code.startsWith('4') || code.startsWith('5')) {
                    if (isShowLoading) {
                        wx.hideLoading()
                    }
                    this._show_error(`服务端错误[${code}]`)
                } else {
                    reject(res)
                    const error_code = res.data.msg
                    this._show_error(error_code)
                }
            },
            fail: (err) => {
                reject(err)
                this._show_error('网络连接失败')
                if (isShowLoading) {
                    wx.hideLoading()
                }
            }
        })

    }

    /**
     *
     * 报错处理
     */
    _show_error(err) {
        wx.showToast({
            title: err,
            icon: 'none',
            duration: 4000
        })
    }

    
}

export {
    HTTP
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值