偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

80% 的前端都不知道 AbortController 究竟有多么強(qiáng)大!

開(kāi)發(fā) 前端
有時(shí)候,你的中斷條件只依賴(lài)于一個(gè) AbortController?,而有時(shí)候,一個(gè)中斷條件需要依賴(lài)多個(gè) AbortController? 來(lái)決定,那應(yīng)該咋做呢?貌似我們剛剛的 signal 只能傳入一個(gè)。

最近發(fā)現(xiàn)很多人其實(shí)都沒(méi)用過(guò)一個(gè)原生的很強(qiáng)大的 API,那就是 AbortController ,可能很多人在用 axios 的時(shí)候用過(guò)這個(gè) API 來(lái) 中斷請(qǐng)求,但是其實(shí)大部分人不知道,其實(shí) AbortController 不止能用來(lái)做這些,它非常強(qiáng)大!

AbortController 的基本用法如下:

  • signal: 打上標(biāo)記
  • abort: 執(zhí)行中斷

圖片圖片

中斷請(qǐng)求 & 請(qǐng)求超時(shí)

AbortController 的可以用來(lái)中斷請(qǐng)求,大家都知道,但是都是通過(guò) axios,那么原生的請(qǐng)求怎么中斷呢?其實(shí) axios 也是基于原生請(qǐng)求封裝的嘛!

fetch 請(qǐng)求時(shí)可以接收一個(gè) signal 的參數(shù),打上標(biāo)記,并且通過(guò)這個(gè)標(biāo)記所屬的實(shí)例來(lái)進(jìn)行中斷。

圖片圖片

如果你不想手動(dòng)去取消請(qǐng)求,而是想做自動(dòng)的 請(qǐng)求超時(shí),你可以使用 AbortSignal.timeout。

圖片圖片

事件監(jiān)聽(tīng)中斷

事件監(jiān)聽(tīng) 是很常見(jiàn)的場(chǎng)景,我們需要使用 addEventListener 去給目標(biāo)元素綁定事件,并且需要使用 removeEventListener 去中斷這些監(jiān)聽(tīng)。

圖片圖片

但是其實(shí)很多人都不知道,addEventListener 其實(shí)可以傳入第三個(gè)參數(shù),第三個(gè)參數(shù)可以傳入一個(gè)對(duì)象,這個(gè)對(duì)象中可以傳入一個(gè) signal 的屬性,當(dāng)做中斷的標(biāo)記。

圖片圖片

所以 AbortController 也可以用在這里,用來(lái)中斷事件監(jiān)聽(tīng),你可以選擇用多個(gè) AbortController 實(shí)例來(lái)分別取消事件的監(jiān)聽(tīng)

圖片圖片

你也可以用同一個(gè) AbortController 實(shí)例來(lái)取消所有的事件監(jiān)聽(tīng)

圖片圖片

發(fā)布訂閱

我們可以監(jiān)聽(tīng)到 abort 的執(zhí)行,需要對(duì) controller.signal 進(jìn)行監(jiān)聽(tīng) abort 事件

圖片圖片

所以其實(shí)我們可以通過(guò)這個(gè)特性,讓 AbortController 來(lái)充當(dāng) 發(fā)布訂閱 的作用

圖片圖片

AbortSignal.any

有時(shí)候,你的中斷條件只依賴(lài)于一個(gè) AbortController,而有時(shí)候,一個(gè)中斷條件需要依賴(lài)多個(gè) AbortController 來(lái)決定,那應(yīng)該咋做呢?貌似我們剛剛的 signal 只能傳入一個(gè)。

其實(shí),確實(shí)只能傳入一個(gè),但是我們可以將多個(gè)組合成一個(gè),來(lái)傳入,就像是 Promise.all、Promise.race、Promise.any 那樣。

而在這里我們可以使用 AbortSignal.any。

圖片圖片

兼容性

圖片 圖片

責(zé)任編輯:武曉燕 來(lái)源: 前端之神
相關(guān)推薦

2020-12-21 09:00:04

MySQL緩存SQL

2020-12-21 09:44:53

MySQL查詢(xún)緩存數(shù)據(jù)庫(kù)

2011-09-06 13:56:07

Vista服務(wù)器網(wǎng)卡

2021-07-12 07:59:06

安全 HTML 屬性

2020-07-29 09:53:09

VSCode編碼工具插件

2018-12-06 09:12:58

2021-01-12 12:33:20

Pandas技巧代碼

2021-11-12 10:05:19

跳表BAT面試

2018-10-17 14:50:08

2011-09-09 14:02:41

linuxscreen

2025-02-18 00:05:00

2025-02-04 17:33:00

2020-06-12 09:20:33

前端Blob字符串

2020-07-28 08:26:34

WebSocket瀏覽器

2023-01-13 16:48:48

前端開(kāi)發(fā)JavaScript

2021-07-22 09:28:35

DockerLinux命令

2022-10-28 21:29:55

前端藍(lán)牙心率帶

2020-08-04 09:57:52

JS開(kāi)發(fā)前端

2022-12-05 15:23:33

JavaScript技巧運(yùn)算符

2022-10-31 18:38:24

MySQL數(shù)據(jù)訂單表
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)