博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在外部终止一个pengding状态的promise对象
阅读量:6274 次
发布时间:2019-06-22

本文共 740 字,大约阅读时间需要 2 分钟。

今天在整理前段时间做过的项目,发现之前在集成web环信的时候遇到过一个奇怪的需求:

需要终止一个正在进行等待返回的promise,或者阻止其调用resolve和reject。(具体为何会有这种需求我也不太记得了。。。

现在回头看,一定会有其他的常规解决方案)。

不过本着对未知牛角尖的专研精神(最近有点闲),在咨询知乎大神,重读阮大神的《es6入门》书中promise一章后,

找到了一个原生js的解决方案:Promise.race。

            

上面的代码点击发送请求按钮后,调用getIterface方法,

方法内创建并立即执行两个promise函数:promise1promise2Promise.race方法立即开始监听这两个promise对象的状态。

1. 如果3秒内用户有任何操作,那么promise1内的resolve方法被调用:此时“接口”返回成功,Promise.race不再监听promise2的状态,

直接返回接口的返回结果:'接口返回成功!'。

2. 如果3秒内用户点击取消调用接口按钮 ,那么promise2内的reject方法被调用,此时Promise.race不再监听promise2(异步接口)的返回状态,

直接返回promise2的返回结果:'取消等待接口'。

这样就可以模拟外部中断promise返回结果了,比如 promise1是一个ajax请求,那么就可以在返回前在Promise.race中abort()请求了。

 

转载于:https://www.cnblogs.com/zhuxiaoweb/p/8360663.html

你可能感兴趣的文章
小程序 · 跳转带参数写法,兼容url的出错
查看>>
开源干货!!!.NET Core + Vue.js(iview-admin) 通用动态权限(RBAC)管理系统框架[DncZeus]开源啦!!!...
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>
算法与数据结构1800题 图
查看>>
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
浅析DNS解析过程
查看>>