如何基于axios返回的特定状态代码运行功能?

时间:2018-08-02 01:15:23

标签: javascript axios

jquery ajax之前,我们可以这样做:

$.ajax({
        type: param.method || 'get',
        url: param.url || '',
        dataType: param.type || 'json',
        data: param.data || '',
        success(res){
            if(res.status === 0){
                typeof param.success === 'function' && param.success(res.data, res.msg)
            }else if(res.status === 10){
                _this.doLogin()
            }else if(res.status === 1){
                typeof param.error === 'function' && param.error(res.msg)
            } 
        },
        error(err){
            typeof param.error === 'function' && param.error(err.statusText)
        }
    })

在上述代码中,例如,当res.status===0时,执行typeof param.success === 'function' && param.success(res.data, res.msg)

如果在axios中,如何处理此自定义状态并执行相应的操作?

1 个答案:

答案 0 :(得分:1)

可以通过以下两种方法完成它们:

yourFunctionCall() {
    alert('hello!');
}    

1)interceptors,它会在每次请求时发生

axios.interceptors.response.use(function (response) {

    if (response.status === 0) {
        yourFunctionCall();
    }

    return response;
}, function (error) {
    // Do something with response error
    return Promise.reject(error);
});

2),或者在实际的axios中调用自身(取决于您的设置)

axios({
    ...
    method:'get',
    url:'<your-http-call>',
    ...
}).then(function(response) {
    console.log(response.status); // via status code
    console.log(response.data.status); // via response status code 

    if (response.status === 0) {
        yourFunctionCall();
    }

}).catch(function (error) {
    console.log(error.response); // log error response
});