自2017年推出以來, AbortController
提供了一種取消fetch()
請求的強大機制。該功能超出了簡單的API調用,提供了用於管理活動聽眾的優雅解決方案,尤其是在諸如拖放互動之類的場景中。
一個簡單的示例演示了取消fetch()
請求:
const Controller = new AbortController(); const res = fetch('/',{signal:controller.signal}); controller.abort(); console.log(res); // =>承諾(被拒絕):“ domexception:用戶中止請求”
AbortController
還改善了超時處理,為setTimeout
提供了更清潔的替代方法:
功能超時(持續時間,信號){ 返回新的承諾((分辨率,拒絕)=> { const handle = settimeout(解析,持續時間); 訊號? .addeventListener('abort',()=> { cleartimeout(handle); 拒絕(新錯誤(“流產”)); }); }); } // 用法 const Controller = new AbortController(); const Promise =超時(10000,Controller.Signal); controller.abort(); console.log(Promise); // =>承諾(被拒絕):“錯誤:中止”
然而,重大進步在於Chrome 88對addEventListener
中AbortSignal
的支持。這允許一種簡化的方法同時刪除多個事件偵聽器,從而取代了多個removeEventListener
調用的需求。
考慮一個拖放示例。以前,管理mousedown
, mousemove
和mouseup
事件需要使用removeEventListener
明確刪除:
//使用RemoveEventListener el.AddeventListener('Mousedown',e => { if(e.buttons!== 1)返回; const onMouseMove = e => { if(e.buttons!== 1)返回; /* 工作 */ }; const onMouseUp = e => { if(E.Buttons&1)返回; Window.RemoveEventListener('Mousemove',OnMouseMove); window.removeEventListener('MouseUp',onMouseUp); }; Window.AddeventListener('Mousemove',OnMouseMove); Window.AddeventListener('MouseUp',onMouseUp); });
使用AbortController
,一個abort()
呼叫可干淨地刪除所有相關的聽眾:
//使用abortcontroller el.AddeventListener('Mousedown',e => { if(e.buttons!== 1)返回; const Controller = new AbortController(); window.addeventlistener('Mousemove',e => { if(e.buttons!== 1)返回; /* 工作 */ },{信號:controller.signal}); window.addeventListener('MouseUp',e => { if(E.Buttons&1)返回; controller.abort(); },{信號:controller.signal}); });
目前,只有Chrome 88完全支持與addEventListener
AbortSignal
集成。雖然其他瀏覽器支持AbortController
,但此特定功能尚未廣泛實現。多填充可用於更廣泛的兼容性。
以上是使用abortcontroller作為刪除活動聽眾的替代方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

前幾天我得到了這個問題。我的第一個想法是:奇怪的問題!特異性是關於選擇者的,而在符號不是選擇器,那麼...無關緊要?

在這篇文章中,我們將使用我構建和部署的電子商務商店演示來進行Netlify,以展示如何為傳入數據製作動態路線。這是一個公平的


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)