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

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

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

前言

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

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

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

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

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

用变量去中断?

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

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

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

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

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

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

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

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

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

Promise.race?

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

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

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

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

CancelToken

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

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

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

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • 红魔电竞平板评测:大屏幕硬实力

    红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • 如何通过Python线程池实现异步编程?

    如何通过Python线程池实现异步编程?

    线程池的概念和基本原理线程池是一种并发处理机制,它可以在程序启动时创建一组线程,并将它们置于等待任务的状态。当任务到达时,线程池中的某个线程会被唤醒并执行任务,执行完任
  • 三言两语说透柯里化和反柯里化

    三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 从零到英雄:高并发与性能优化的神奇之旅

    从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • 当家的盒马,加速谋生

    当家的盒马,加速谋生

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

    阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • 联想的ThinkBook Plus下一版曝光,键盘旁边塞个平板

    联想的ThinkBook Plus下一版曝光,键盘旁边塞个平板

    ThinkBook Plus 是联想的一个特殊笔记本类别,它在封面放入了一块墨水屏,也给人留下了较为深刻的印象。据有人爆料,联想的下一款 ThinkBook Plus 可能更特殊,它
Top
Baidu
map