困扰两天了,在网上找了很多方法都没能解决来此提问。
两个异步函数:
第一个函数用于检测设备能否联网
function getNetwork() {
return new Promise((resolve, reject) => {
wx.getNetworkType({
success(res) {
if (res.networkType === 'none') {
reject()
} else {
resolve()
}
}
})
})
}
第二个函数先调用第一个函数然后then之后再执行
function HTTP(url) {
return getNetwork().then(() => {
return new Promise((resolve, reject) => {
wx.request({
url: url,
method:"GET",
success: (res) => {
wx.hideLoading();
if(res.data.code==1){
resolve(res.data);
}else{
reject(res.data);
}
},
fail: (err) => {
reject(err);
}
})
})
}).catch(() => {
wx.showToast({
title: '未能连接网络',
icon: 'none',
duration: 5000
})
return {'data':null};
})//判断网络连接
}
在使用过程中即使第二个函数异常执行了catch,但是会执行第一个函数的then,请问如何让解决,感谢。
既然问题都已经解决了,这里不讨论问题本身。只是建议尽量使用新语法来简化代码。
2.10.2
版本开始支持返回 Promise,不需要自己封装0.10.101000
开始就支持增强编译,允许使用 await。 使用 await 可以简化代码写法,参考:理解 JavaScript 的 async/await基于上述两点,代码可以简化一些