import common from "../common/common.js";
export default {
handleToastLoading: function () {
// 注意此代码应该在调用原生api之前执行
let isShowLoading = false;
let isShowToast = false;
const { showLoading, hideLoading, showToast, hideToast } = wx;
Object.defineProperty(wx, "showLoading", {
configurable: true, // 是否可以配置
enumerable: true, // 是否可迭代
writable: true, // 是否可重写
value(...param) {
if (isShowToast) {
// Toast优先级更高
console.log("--------isShowToast true 无法 show loading--------");
return;
}
isShowLoading = true;
console.log("--------showLoading--------");
return showLoading.apply(this, param); // 原样移交函数参数和this
},
});
Object.defineProperty(wx, "hideLoading", {
configurable: true, // 是否可以配置
enumerable: true, // 是否可迭代
writable: true, // 是否可重写
value(...param) {
if (isShowToast) {
// Toast优先级更高
console.log("--------isShowToast true 无法 hide loading--------");
return;
}
isShowLoading = false;
console.log("--------hideLoading--------");
return hideLoading.apply(this, param); // 原样移交函数参数和this
},
});
Object.defineProperty(wx, "showToast", {
configurable: true, // 是否可以配置
enumerable: true, // 是否可迭代
writable: true, // 是否可重写
value(...param) {
if (isShowLoading) {
// Toast优先级更高
console.log(
"--------isShowLoading true toast show hide loading--------"
);
wx.hideLoading();
}
isShowToast = true;
console.error("--------showToast--------");
/**
* 因为目前项目toast的策略不会调用hidetoast
* 所以isShowToast = false;执行不到 这样会导致loading的问题
* 根据配置的时间来处理 `isShowToast = false`
*/
setTimeout(() => {
isShowToast = false;
}, common.TOAST_DURING_TIME);
return showToast.apply(this, param); // 原样移交函数参数和this
},
});
Object.defineProperty(wx, "hideToast", {
configurable: true, // 是否可以配置
enumerable: true, // 是否可迭代
writable: true, // 是否可重写
value(...param) {
isShowToast = false;
console.error("--------hideToast--------");
return hideToast.apply(this, param); // 原样移交函数参数和this
},
});
},
};