最近在使用MUI重构之前的一款APP,发现在使用mui ajax---getJson的时候发现小米、安卓的系统上设置 async = false后,回调函数success调用是同步的。这里吐槽一下,安卓手机有一个缺点就是参差不齐。
本想着写个通用的ajax函数,现在不得不为每个业务函数写单独的success函数,中间我也考虑ajax函数执行后延迟执行下句,不过没什么作用。最后想到了一个办法,在这里写出来,给大家参考一下。
不知道大家有没有碰到类似的问题,有没有什么更好的解决办法?
pileState: function(url, cpid,callback) {
var mask = mui.createMask();
url = url + "scanCharge/isChargePile";
window.res = 0;
mui.ajax(url, {
data: {
deviceId: cpid
},
dataType: "JSON",
type: "GET",
crossDomain: true,
async: false, // 使用同步操作,无效T-T
beforeSend: function() {
plus.nativeUI.showWaiting("加载中...", {});
mask.show();//显示遮罩层
},
complete: function() {
plus.nativeUI.closeWaiting();
mask.close();//关闭遮罩层
callback(window.res);
},
success: function(data) {
window.res = data.detail;
},
error: function() {
window.res = false;
}
});
在调用的时候,传入匿名函数。
Pile.pileState(url,cpid,function(e){
//这里拿到返回的参数。
});
自己的土方法,希望可以给大家带来一定的参考。如果有更好的办法,希望大家可以留言一下@~@
网友评论