自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中文网其他相关文章!

React生态系统为我们提供了许多库,所有库都集中在拖放的相互作用上。我们有反应,反应,可爱dnd,

我可以说我经常使用背景折叠。 IT Wager IT几乎从未在日常CSS工作中使用。但是在斯特凡·朱迪斯(Stefan Judis)的帖子中,我想起了它,

使用RequestAnimationFrame进行动画化应该很容易,但是如果您还没有彻底阅读React的文档,那么您可能会遇到一些事情

听着,我不是GraphQL专家,但我确实喜欢与之合作。作为前端开发人员,它向我曝光数据的方式非常酷。它就像一个菜单


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

记事本++7.3.1
好用且免费的代码编辑器

WebStorm Mac版
好用的JavaScript开发工具

Dreamweaver Mac版
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)