利用promise.race来实现请求超时埋点功能
// 查询queryTickets (index) {this.tsRefresh[index] = false;this.$forceUpdate();let reason, code; //埋点用Promise.race([new Promise((resolve, reject) => {this.$model.xxx[this.queryMethodArr[index]](this.queryParamArr[index], res => {code = res.result.code;if (res && code == "0000" && res.data && JSON.stringify(res.data) != "{}") {this.queryTicketsCallBack({index,data: res.data});if (index == 0) {this.queryFinishedCallback();}resolve("请求成功");} else {if (JSON.stringify(res.data) == "{}") {reason = "结构错误";} else {reason = "没有返回结果";}reject("没有返回结果");}});}), new Promise((resolve, reject) => {setTimeout(() => {reason = "请求超时";reject("请求超时");}, 6000);})]).catch((e) => {// 埋点let tval = "";try {let mdval = {index,};console.log(mdval, "mdval");tval = encodeURIComponent(JSON.stringify(mdval));} catch (error) {tval = "";}this.$tcTrackEvent("queryerror", "action", e, tval);this.$tcTrackEvent("", "show", "", JSON.stringify({reason: "错误",content: "错误~"}));if (!this.dealTimeOut) {this.dealTimeOut = true;// postmessage给小程序刷新window.wx && wx.miniProgram && wx.miniProgram.postMessage({ data: "xxx" });this.$alert({title: "温馨提示",message: "错误",callback: () => {if (this.$env.isMiniProgram&&this.query.planCode!="xxx") { wx.miniProgram.navigateBack();} else {this.$router.back();}},buttons: [{text: "返回列表"}]});}});},
利用promise.race来实现请求超时埋点功能相关推荐
- ajax请求如何判断超时,ajax请求超时判断(转载)
ajax请求时有个参数可以借鉴一下 var ajaxTimeOut = $.ajax({ url:'', //请求的URL timeout : 1000, //超时时间设置,单位毫秒 type : ' ...
- promise请求超时处理
实现效果 规定时间内如果网络请求还未完成,则自动取消请求,并报错请求超时. 重点 使用setTimeout设置超时时间. 使用Promise.race()方法实现效果.该方法的作用请跳转 MDN Pr ...
- [探索] 利用promise做一个请求锁
在最近开发小程序的过程中,遇到一个需求,就是请求的时候header需要带上accessToken, accessToken是通过登陆接口返回的参数,可能会出现过期的情况,则需要重新登陆,所以每次加载小 ...
- 已超过了锁请求超时时段_分布式锁:效率与正确性的衡权
提到分布式锁,很多人也许会脱口而出 "redis",可见利用 redis 实现分布式锁已被认为是最佳实践.这两天有个同事问我一个问题:"如果某个服务拿着分布式锁的时候,r ...
- fetch设置请求超时
常规封装 fetch // 封装fetch let POST = function(url, params) {const URLS = baseURL + url;return fetch(URLS ...
- 微信小程序设置请求超时wx.request等,简单易懂!
微信小程序设置请求超时wx.request等 一.用到的方法: 个人理解,比较粗糙 看不懂可以百度一下具体用法 new Promise:new了一个函数或者方法,可以被Promise.race等方法调 ...
- axios 登录后设置header_axios如何利用promise无痛刷新token
需求 最近遇到个需求:前端登录后,后端返回token和token有效时间,当token过期时要求用旧token去获取新的token,前端需要做到无痛刷新token,即请求刷新token时要做到用户无感 ...
- axios请求超时,设置重新请求的完美解决方法
自从使用Vue2之后,就使用官方推荐的axios的插件来调用API,在使用过程中,如果服务器或者网络不稳定掉包了, 你们该如何处理呢? 下面我给你们分享一下我的经历. 具体原因 最近公司在做一个项目, ...
- rxjs处理http请求超时
博客原文地址 使用场景 用户进行一个操作请求后台而长时间未响应,我们希望给用户一个信息展示(请求超时,网络不好-). RxJS实现 关于RxJS请看这里 我这个功能的实现主要使用 delay,race ...
最新文章
- Cocos坐标之convertToNodeSpace、convertToWorldSpace、convertToNodeSpaceAR、convertToWorldSpaceAR区别和用法...
- Duilib嵌入CEF出现窗口显示不正常
- 设置ios6中UIViewController旋转
- win7部分便笺的元数据已被损坏
- 爬虫入门-3.初识BeautifulSoup
- 使用 gunicorn 部署flask项目
- usb连接不上 艾德克斯电源_硬核充电宝?360汽车应急电源入手体验
- python自动化办公 51cto_Python办公自动化之从Word到Excel
- struts的工作原理
- 数据分析与机器学习之线性回归与逻辑回归(六)
- ubuntu 17.10 如何设置合盖不关机
- UCSC Xena:癌症基因组学数据分析平台
- python开发出来的crm系统_关于python开发CRM系统
- 2020还是AI最火?推荐几本深度学习的书籍帮你入门!
- 春运火车上的这10种人,有一个就是你!
- erp系统服务器性能指标,ERP系统体检的三大关键指标
- 一名投资客手写MT4爆仓现价
- Lazada平台API:item_search - 按关键字搜索商品
- bigemap软件功能优势
- python pyquery_python pyquery 基本用法