微信小程序request请求后complete比success和fail执行时机稍后,也就是说,如果在success里有回调函数,那么complete中的业务逻辑会稍后才会执行,可能有一些意想不到的bug存在。
最近在做小程序,之前写的请求公用方法,在请求前,弹出loading框,请求完成complete中隐藏了loading框。但是突然有一个需要要上传图片,因为图片上传和普通字段数据请求是分开的两个接口。也就是说普通字段上传成功后,图片才能上传。
但是图片比较大的话,就需要使用loading框。于是我最开始的代码是这么写的:、
//公用post方法
//隐藏loading框的业务处理是在complete中
function post(params, noNeedLoading) {
if (!noNeedLoading) {
wx.showLoading({
title: '加载中',
mask: true
});
}
wx.request({
method: 'POST',
url: config.HTTP_BASE_URL + params.url,
data: params.data,
header: { 'content-type': 'application/x-www-form-urlencoded' },
success: function(res) {
if (params.success) {
params.success(res.data);
}
},
fail: function(res) {
if (params.fail) {
params.fail(res.errMsg);
} else {
wx.showModal({
title: '提示',
showCancel: false,
content: '请检查网络'
});
}
},
complete: function() {
wx.hideLoading();
}
});
};
网友评论