自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

80% 的前端都不知道 AbortController 究竟有多么強大!

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

最近發(fā)現(xiàn)很多人其實都沒用過一個原生的很強大的 API,那就是 AbortController ,可能很多人在用 axios 的時候用過這個 API 來 中斷請求,但是其實大部分人不知道,其實 AbortController 不止能用來做這些,它非常強大!

AbortController 的基本用法如下:

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

圖片圖片

中斷請求 & 請求超時

AbortController 的可以用來中斷請求,大家都知道,但是都是通過 axios,那么原生的請求怎么中斷呢?其實 axios 也是基于原生請求封裝的嘛!

fetch 請求時可以接收一個 signal 的參數(shù),打上標(biāo)記,并且通過這個標(biāo)記所屬的實例來進行中斷。

圖片圖片

如果你不想手動去取消請求,而是想做自動的 請求超時,你可以使用 AbortSignal.timeout。

圖片圖片

事件監(jiān)聽中斷

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

圖片圖片

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

圖片圖片

所以 AbortController 也可以用在這里,用來中斷事件監(jiān)聽,你可以選擇用多個 AbortController 實例來分別取消事件的監(jiān)聽

圖片圖片

你也可以用同一個 AbortController 實例來取消所有的事件監(jiān)聽

圖片圖片

發(fā)布訂閱

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

圖片圖片

所以其實我們可以通過這個特性,讓 AbortController 來充當(dāng) 發(fā)布訂閱 的作用

圖片圖片

AbortSignal.any

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

其實,確實只能傳入一個,但是我們可以將多個組合成一個,來傳入,就像是 Promise.all、Promise.race、Promise.any 那樣。

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

圖片圖片

兼容性

圖片 圖片

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

2020-12-21 09:00:04

MySQL緩存SQL

2020-12-21 09:44:53

MySQL查詢緩存數(shù)據(jù)庫

2011-09-06 13:56:07

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

2021-07-12 07:59:06

安全 HTML 屬性

2020-07-29 09:53:09

VSCode編碼工具插件

2021-01-12 12:33:20

Pandas技巧代碼

2018-12-06 09:12:58

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

前端開發(fā)JavaScript

2021-07-22 09:28:35

DockerLinux命令

2022-10-28 21:29:55

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

2019-04-01 06:37:12

R語言數(shù)據(jù)分析數(shù)據(jù)

2022-12-05 15:23:33

JavaScript技巧運算符

2020-08-04 09:57:52

JS開發(fā)前端
點贊
收藏

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