微信小程序request請求后complete比success和fail執(zhí)行時機稍后,也就是說,如果在success里有回調函數(shù),那么complete中的業(yè)務邏輯會稍后才會執(zhí)行,可能有一些意想不到的bug存在。
最近在做小程序,之前寫的請求公用方法,在請求前,彈出loading框,請求完成complete中隱藏了loading框。但是突然有一個需要要上傳圖片,因為圖片上傳和普通字段數(shù)據(jù)請求是分開的兩個接口。也就是說普通字段上傳成功后,圖片才能上傳。
但是圖片比較大的話,就需要使用loading框。于是我最開始的代碼是這么寫的:、
//公用post方法
//隱藏loading框的業(yè)務處理是在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: '請檢查網(wǎng)絡'
});
}
},
complete: function() {
wx.hideLoading();
}
});
};