日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

如何中止一個 Promise 呢?一個有意思的問題

來源: 責編: 時間:2024-05-20 08:53:02 200觀看
導讀前言最近看到一道大廠的面試題,我覺得這道題不錯,能考驗到大家的 Promise 基礎。題目如下~看到這道題你們會怎么去回答呢?就比如有以下的一個 Promise ,我們要如何去中止他呢?用變量去中斷?很多人會第一時間想到,使用一個變

前言

最近看到一道大廠的面試題,我覺得這道題不錯,能考驗到大家的 Promise 基礎。題目如下~lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

看到這道題你們會怎么去回答呢?就比如有以下的一個 Promise ,我們要如何去中止他呢?lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

用變量去中斷?

很多人會第一時間想到,使用一個變量去控制要不要中止這個 Promise:lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

但是你們覺得這樣是對的嗎?其實這樣并不是真正的中止,因為我們只是限制了 resolve 的執行,但是 setTimeout 還是走完了,所以輸出了 請求到數據:lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

而真正的中止,肯定是把 setTimeout 也中止掉,所以需要改改:lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

但是可以看到,新增一個標識變量,非常的繁瑣,況且如果有多個 Promise,那就得要有多個標識變量,非常麻煩,所以換一種方式。lCz28資訊網——每日最新資訊28at.com

Promise.race?

我們在工作中都會使用到 Promise.race這個方法去判斷一個請求有沒有超時,那同理,可不可以用 Promise.race 來進行中止 Promise 的操作呢?lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

可以看到,這個中止也不是真的中止,也只是限制了 resolve 的執行,而不是把 setTimeout 也給中斷了~lCz28資訊網——每日最新資訊28at.com

CancelToken

接下來是紅寶書上的做法,堪稱經典,不用使用任何全局的標識變量,也能做到中止 Promise:lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

這種做法的好處是:lCz28資訊網——每日最新資訊28at.com

  • 不需要設置全局的標識變量
  • 多個請求并發也可以區別取消

比如我多次執行的話,想取消哪次就取消哪次,因為每次的 CancelToken實例都是新的!!!lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

lCz28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-89229-0.html如何中止一個 Promise 呢?一個有意思的問題

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 如何在 ASP.NET Core 優雅地處理多接口實現,你學會了嗎?

下一篇: Python 代碼格式化的十個工具與技巧

標簽:
  • 熱門焦點
  • 6月安卓手機性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經正式過去了,我們也迎來了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發布之前,性能榜的榜單大體會以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領先
  • SpringBoot中使用Cache提升接口性能詳解

    環境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架從 3.1 開始,對 Spring 應用程序提供了透明式添加緩存的支持。和事務支持一樣,抽象緩存允許一致地使用各
  • 不容錯過的MSBuild技巧,必備用法詳解和實踐指南

    一、MSBuild簡介MSBuild是一種基于XML的構建引擎,用于在.NET Framework和.NET Core應用程序中自動化構建過程。它是Visual Studio的構建引擎,可在命令行或其他構建工具中使用
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規模如今超過580
  • JavaScript學習 -AES加密算法

    引言在當今數字化時代,前端應用程序扮演著重要角色,用戶的敏感數據經常在前端進行加密和解密操作。然而,這樣的操作在網絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數據
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經知道了,就當作復習一下,古人云,溫故而知新嘛。現在,我們就開始今
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時候了!學弟,最近學習的怎么樣啊 了不起學弟:最近學習的還不錯,每天都在學習,每天都在進步! 了不起:那你最近學習的什么呢? 了不起學弟:最近在學習C
  • OPPO K11搭載高性能石墨散熱系統:旗艦同款 性能涼爽釋放

    日前OPPO官方宣布,將于7月25日14:30舉辦新品發布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣點就是將配備索尼
  • 上海舉辦人工智能大會活動,建設人工智能新高地

    人工智能大會在上海浦江兩岸隆重拉開帷幕,人工智能新技術、新產品、新應用、新理念集中亮相。8月30日晚,作為大會的特色活動之一的上海人工智能發展盛典人工
Top 主站蜘蛛池模板: 米林县| 鄂托克前旗| 金堂县| 承德县| 徐闻县| 于田县| 克拉玛依市| 黄石市| 南平市| 文安县| 洪江市| 福安市| 潼关县| 钦州市| 高碑店市| 灵川县| 印江| 夹江县| 呼图壁县| 南丰县| 楚雄市| 中超| 庆安县| 昌乐县| 阳新县| 喀喇沁旗| 个旧市| 湘西| 通道| 汨罗市| 连城县| 通辽市| 北京市| 汉中市| 休宁县| 珲春市| 奎屯市| 上林县| 开鲁县| 白山市| 康乐县|