• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

小程序自定义promise封装request请求(连接超时)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
之前由于项目比较赶  所有草草的封装了一下请求  并没有超时这类的操作;最近闲下来了,所以就补上了;
 
  第一次自己写,难免的,然后把,偶遇了一下promise.race();
PS::::
官解———————————————————————————————————————————————————————————————————————————————————————>

race 函数返回一个 Promise,它将与第一个传递的 promise 相同的完成方式被完成。它可以是完成( resolves),也可以是失败(rejects),这要取决于第一个完成的方式是两个中的哪个。                   

如果传的迭代是空的,则返回的 promise 将永远等待。

如果迭代包含一个或多个非承诺值和/或已解决/拒绝的承诺,则 Promise.race 将解析为迭代中找到的第一个值。

——————————————————————————————————————————————————————————————————————————————————————————
::::
我的理解===>
    _________
 
      就是说这个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,
})
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
自己去年写的GPS小程序发布时间:2022-07-22
下一篇:
小程序轮播图发布时间:2022-07-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap