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

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

浏览量:564 时间: 来源:weixin_30824599
之前由于项目比较赶  所有草草的封装了一下请求  并没有超时这类的操作;最近闲下来了,所以就补上了;   第一次自己写,难免的,然后把,偶遇了一下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,  })}

 

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎