日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

如何取消一個(gè)已經(jīng)開(kāi)始的 JavaScript Promise

admin
2025年6月11日 16:46 本文熱度 224

在現(xiàn)代前端開(kāi)發(fā)中,Promise 和 async/await 已經(jīng)成為處理異步操作的基石。然而,一個(gè)常見(jiàn)的棘手問(wèn)題是:如何取消一個(gè)已經(jīng)開(kāi)始的 Promise?

比如,用戶發(fā)起一個(gè)數(shù)據(jù)請(qǐng)求,但在請(qǐng)求完成前又導(dǎo)航到了其他頁(yè)面;或者用戶在一個(gè)搜索框中快速輸入,我們需要取消前一次的搜索請(qǐng)求,只保留最后一次。在這些場(chǎng)景下,取消一個(gè)進(jìn)行中的 Promise 就顯得至關(guān)重要。

核心問(wèn)題:為什么 Promise 本身不可取消?

首先,我們需要理解 Promise 的核心設(shè)計(jì)理念。一個(gè) Promise 代表一個(gè)異步操作的最終結(jié)果。它的狀態(tài)一旦從 pending(進(jìn)行中)變?yōu)?nbsp;fulfilled(已成功)或 rejected(已失?。?,就永遠(yuǎn)不會(huì)再改變。

Promise 本身不提供取消機(jī)制,原因如下:

  1. 狀態(tài)不可逆:這是 Promise 的核心規(guī)范。一旦狀態(tài)改變,就形成了一個(gè)確定的、不可變的結(jié)果。
  2. 單一責(zé)任:Promise 的職責(zé)是傳遞價(jià)值和狀態(tài),而不是控制異步操作本身的執(zhí)行流程。發(fā)起異步操作的函數(shù)(如 fetch)才是執(zhí)行者。

打個(gè)比方:你寄出了一封信(發(fā)起了一個(gè) Promise),你不能在信件投遞過(guò)程中把它神奇地從郵政系統(tǒng)里撤回來(lái)。你能做的,是在信件送達(dá)時(shí)(Promise 完成時(shí)),選擇忽略它。

我們的目標(biāo),就是實(shí)現(xiàn)這種“忽略”機(jī)制,并盡可能地通知底層的異步操作停止工作,以節(jié)省資源。

AbortController

AbortController 是目前實(shí)現(xiàn) Promise 取消的最佳實(shí)踐和標(biāo)準(zhǔn)方案。它最初是為取消 fetch 請(qǐng)求而設(shè)計(jì)的,但其通用性使其可以與任何異步操作集成。

AbortController 的工作方式

  1. 創(chuàng)建一個(gè) AbortController 實(shí)例。
  2. controller.signal:這是一個(gè) AbortSignal 對(duì)象,可以傳遞給需要支持取消的異步函數(shù)(如 fetch)。
  3. controller.abort():調(diào)用此方法來(lái)發(fā)出“中止”信號(hào)。
  4. 當(dāng) abort() 被調(diào)用時(shí),signal 會(huì)通知所有監(jiān)聽(tīng)它的異步操作。對(duì)于 fetch 來(lái)說(shuō),它會(huì)自動(dòng)中止網(wǎng)絡(luò)請(qǐng)求并讓 Promise reject 一個(gè)名為 AbortError 的錯(cuò)誤。

1. 與 fetch 配合使用

這是 AbortController 最常見(jiàn)的用法。

在 async/await 語(yǔ)法中同樣清晰:

2. 在自定義 Promise 中使用 AbortController

你也可以讓你自己的異步函數(shù)支持 AbortSignal。

原理

  • 你的函數(shù)需要接收 signal 作為參數(shù)。
  • 在異步操作的關(guān)鍵節(jié)點(diǎn),檢查 signal.aborted 屬性。如果為 true,則提前退出。
  • 使用 signal.addEventListener('abort', ...) 來(lái)注冊(cè)清理邏輯(如清除定時(shí)器)。

優(yōu)點(diǎn)

  • 官方標(biāo)準(zhǔn):是 W3C 和 WHATWG 定義的標(biāo)準(zhǔn) API。
  • 真正中止底層操作fetch 會(huì)中止網(wǎng)絡(luò)連接,自定義函數(shù)也可以通過(guò)它來(lái)清理資源(如清除定時(shí)器),避免了不必要的浪費(fèi)。
  • 語(yǔ)義清晰:通過(guò)專門(mén)的 AbortError 來(lái)區(qū)分“取消”和“其他錯(cuò)誤”,代碼更健壯。
  • 組合性強(qiáng):一個(gè) AbortSignal 可以傳遞給多個(gè) Promise,實(shí)現(xiàn)批量取消。

雖然 Promise 本身的核心設(shè)計(jì)使其不可變,但通過(guò) AbortController 這一強(qiáng)大的模式,我們已經(jīng)可以非常有效地控制和終止異步流程,編寫(xiě)出更健壯、更高效的應(yīng)用程序。


閱讀原文:https://mp.weixin.qq.com/s/O4ej_zb_sKoJcCamCmmvAA


該文章在 2025/6/13 9:29:09 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

美丫一区二区三区| 最新欧美一区二区| 欧美m V日韩w V国产网站| 玖玖爱AV天堂| 丁香精品久久国产幼奸| 人人操妻人人操妻人人操妻人人操 | 日本激情午夜| 国产精品女教师久久2区二区| 五月开心六月婷婷欧美专区| www久| 欧美精品美女综合| 日韩熟女第三区| 亚洲AV在线成人一线| 得荣县| 女同性午夜福利| 欧美熟妇性久久| 婷婷网中文字幕| 久操性图片| 草逼c0m| 日韩中字在线91| av在线观看美女| 久久最新黄vA| 久久夜夜玩| 日韩欧美在线超碰| 少妇久久影院| 日本免费成人电影1区2区| 日本久久综| 久久亚洲综合麻豆| 欧日韩亚一区二区三区| 91操熟女| 日韩欧美国产日本| 另类,欧美Free二区一区伦| 亚洲色网站看看不会| 大香蕉在线视频六九| 久久私人伦理| 久久久青青av| 日韩国黄色影院| 亚洲www,成人网站在线观看| 午夜成人黄色影院| 黑丝美女在线喷水视频观看。| 美女被日B|