在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
之前由于项目比较赶 所有草草的封装了一下请求 并没有超时这类的操作;最近闲下来了,所以就补上了;
第一次自己写,难免的,然后把,偶遇了一下promise.race();
PS::::
官解———————————————————————————————————————————————————————————————————————————————————————>
如果传的迭代是空的,则返回的 promise 将永远等待。 如果迭代包含一个或多个非承诺值和/或已解决/拒绝的承诺,则 ——————————————————————————————————————————————————————————————————————————————————————————
::::
我的理解===>
_________
就是说这个promise.race([A,B]) 是异步操作, 同时进行的, 就行两个人比赛吃饭;谁先吃完 抛出谁的成绩;另一个停止;
__________
看到这么心情那个舒畅啊;
————————
然而,不知道我理解错误还是怎么回事,事实并不是如此,我同时执行两个promise请求,依然是不会阻止进程慢的那个;同样由于时间问题没有深究,搞了一个计时器.....
额,异曲同工吧....反正效果达到了....有时间再去深入;
————————
/**
* 加载超时后显示网络错误提示
* 当前设置为 等待3秒,若超时后仍未返回请求结果,弹窗提示网络错误
*/
var timer = undefined;
function reqPromise(reqUrl, reqData, reqType) {
return Promise.race([
new Promise(function (resolve, reject) {
timer = setTimeout(() => {
reject(showError("网络连接超时"));
}, 3000)
}),post(reqUrl, reqData, reqType)
.then(res => {
timer && clearTimeout(timer);
return res;
}).catch(err => {
timer && clearTimeout(timer);
return Promise.reject(err);
})
])
}
/**
* 弹窗提示网络错误
*/
function showError() {
wx.showModal({
title: '连接超时',
content: '请检查网络连接',
showCancel: false,
})
}
|
请发表评论