当前位置:首页 > 科技  > 软件

如何中止一个 Promise 呢?一个有意思的问题

来源: 责编: 时间:2024-05-20 08:53:02 340观看
导读前言最近看到一道大厂的面试题,我觉得这道题不错,能考验到大家的 Promise 基础。题目如下~看到这道题你们会怎么去回答呢?就比如有以下的一个 Promise ,我们要如何去中止他呢?用变量去中断?很多人会第一时间想到,使用一个变

前言

最近看到一道大厂的面试题,我觉得这道题不错,能考验到大家的 Promise 基础。题目如下~WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

看到这道题你们会怎么去回答呢?就比如有以下的一个 Promise ,我们要如何去中止他呢?WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

用变量去中断?

很多人会第一时间想到,使用一个变量去控制要不要中止这个 Promise:WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

但是你们觉得这样是对的吗?其实这样并不是真正的中止,因为我们只是限制了 resolve 的执行,但是 setTimeout 还是走完了,所以输出了 请求到数据:WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

而真正的中止,肯定是把 setTimeout 也中止掉,所以需要改改:WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

但是可以看到,新增一个标识变量,非常的繁琐,况且如果有多个 Promise,那就得要有多个标识变量,非常麻烦,所以换一种方式。WCd28资讯网——每日最新资讯28at.com

Promise.race?

我们在工作中都会使用到 Promise.race这个方法去判断一个请求有没有超时,那同理,可不可以用 Promise.race 来进行中止 Promise 的操作呢?WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

可以看到,这个中止也不是真的中止,也只是限制了 resolve 的执行,而不是把 setTimeout 也给中断了~WCd28资讯网——每日最新资讯28at.com

CancelToken

接下来是红宝书上的做法,堪称经典,不用使用任何全局的标识变量,也能做到中止 Promise:WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

这种做法的好处是:WCd28资讯网——每日最新资讯28at.com

  • 不需要设置全局的标识变量
  • 多个请求并发也可以区别取消

比如我多次执行的话,想取消哪次就取消哪次,因为每次的 CancelToken实例都是新的!!!WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

WCd28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-89229-0.html如何中止一个 Promise 呢?一个有意思的问题

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 如何在 ASP.NET Core 优雅地处理多接口实现,你学会了吗?

下一篇: Python 代码格式化的十个工具与技巧

标签:
  • 热门焦点
  • 卢伟冰长文解析K60至尊版 对Redmi有着里程碑式的意义

    在今天的Redmi后性能时代战略发布会结束之后,Redmi总经理卢伟冰又带来了一篇长文,详解了为什么 Redmi 要开启后性能时代?为什么选择和 MediaTek、Pixelworks 深度合作?以及后性
  • 把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • 2023年,我眼中的字节跳动

    此时此刻(2023年7月),字节跳动从未上市,也从未公布过任何官方的上市计划;但是这并不妨碍它成为中国最受关注的互联网公司之一。从2016-17年的抖音强势崛起,到2018年的“头腾
  • 最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    来源 | 电商在线文|易琬玉编辑|斯问受访店铺:Ringdoll戒之人形图源:微博@御座的黄山、“Ringdoll戒之人形”淘宝店铺有关外貌的评价,黄山已经听累了。生于1985年的他,哪
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • 小米MIX Fold 3下月亮相:今年唯一无短板的全能折叠屏

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都有新的进展,其中荣耀、三星都已陆续发布了最新的折叠屏旗舰,尤其号荣耀Magi
Top