JavaScript封装Promise之如何返回【error,res】类型的数据总结【有一个坑】【以Axios为例】

一定要注意:Promise如果你要处理异常【等价于catch】就使用reject方法,而如果仅是返回数据,必须使用resole方法 

const axios = require("axios");
const GlobalError = require("../global/GlobalError.js");

module.exports = class OwnAxios {
    static async axiosRequest (url, formData = null, method = "POST", successFunc = null, failFunc = null) {
        console.log("formdata", formData);
        let [error, res] = await new Promise((resolve, reject) => {
            axios({
                url: url,
                method: method,
                data: formData,
            }).then((res) => {
                resolve([null, res]);
            }).catch((error) => {
                封装Promise这里不能使用reject(error)【等价于catch】,要返回error结果必须resolve才可以
                【非常重要】axios这个库的的错误有两种情况【1、请求成功,但是状态码不是200; 2、是请求失败】
                if (error.response) {
                    请求已发出,返回状态码不是200的情况【这种情况依然需要判断状态码,把结果赋值返回给res】
                    resolve([null, error.response]);
                } else {
                    这种情况就是数据库连接失败,请求异常了【结果返回给error】
                    resolve([error, null]);
                }
            });
        });
        console.log([error, res]);
        return GlobalError.requestErrorOrSuccessHandle(res, error, successFunc, failFunc);
    }
};


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值