现在有个需求,在请求之前显示加载组件,请求完成立马隐藏加载显示。但是ajax值提供了4种回调函数:beforeSend,success,error,complete。要隐藏加载显示的组件,要么在success和error里面都加入隐藏加载的逻辑,要么在complete函数加一次,但是这种方式如果在success函数里面发生了异常,就不会走到complete函数里面,也就无法隐藏加载组件,有什么办法实现只写一次隐藏加载的逻辑么?
$.ajax({
url: url,
data: this.reqSearch,
complete:function(XMLHttpRequest,textStatus){
that.$Spin.hide();
},
success: function(res) {
......
},
error: function(){
......
}
})
.then().catch()
?then
的时候强制报错。。。好变态呀。then和fail都走通过一个方法?
beforeSend
在发送请求之前调用,并且传入一个XMLHttpRequest作为参数。error
在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话)dataFilter
在请求成功之后调用。传入返回的数据以及"dataType"参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。success
当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。complete
当请求完成之后调用这个函数,无论成功或失败。传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串。