如何优雅地取消 JavaScript 中正在执行的长尾异步任务?

2026-04-05 09:509阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1518个文字,预计阅读时间需要7分钟。

如何优雅地取消 JavaScript 中正在执行的长尾异步任务?

在处理程序中的异步任务时,通常会比较繁琐,尤其是那些不支持取消异步任务的编程语言。幸运的是,JavaScript+Promise提供了一种非常便利的方式来取消异步任务。自ES2015引入以来,Promise已成为JavaScript处理异步操作的重要工具。

在程序中处理异步任务通常比较麻烦,尤其是那些不支持取消异步任务的编程语言。所幸的是,JavaScript 提供了一种非常方便的机制来取消异步任务。

中断信号

自从 ES2015 引入了 Promise,开发者有了取消异步任务的需求,随后推出的一些 Web API 也开始支持异步方案,比如 Fetch API。TC39 委员会(就是制定 ECMAScript 标准的组织)最初尝试定义一套通用的解决方案,以便后续作为 ECMAScript 标准。但是后来讨论不出什么结果来,这个问题也就搁置了。鉴于此,WHATWG (HTML 标准制定组织)另起炉灶,自己搞出一套解决方案,直接在 DOM 标准上引入了AbortController。这种做法的坏处显而易见,因为它不是语言层面的 ECMAScript 标准,因此 Node.js 平台也就不支持AbortController

在 DOM 规范里,AbortController设计得非常通用,因此事实上你可以用在任何异步 API 中。目前只得到 Fetch API 的官方支持,但你完全可以用在自己的异步代码里。

阅读全文

本文共计1518个文字,预计阅读时间需要7分钟。

如何优雅地取消 JavaScript 中正在执行的长尾异步任务?

在处理程序中的异步任务时,通常会比较繁琐,尤其是那些不支持取消异步任务的编程语言。幸运的是,JavaScript+Promise提供了一种非常便利的方式来取消异步任务。自ES2015引入以来,Promise已成为JavaScript处理异步操作的重要工具。

在程序中处理异步任务通常比较麻烦,尤其是那些不支持取消异步任务的编程语言。所幸的是,JavaScript 提供了一种非常方便的机制来取消异步任务。

中断信号

自从 ES2015 引入了 Promise,开发者有了取消异步任务的需求,随后推出的一些 Web API 也开始支持异步方案,比如 Fetch API。TC39 委员会(就是制定 ECMAScript 标准的组织)最初尝试定义一套通用的解决方案,以便后续作为 ECMAScript 标准。但是后来讨论不出什么结果来,这个问题也就搁置了。鉴于此,WHATWG (HTML 标准制定组织)另起炉灶,自己搞出一套解决方案,直接在 DOM 标准上引入了AbortController。这种做法的坏处显而易见,因为它不是语言层面的 ECMAScript 标准,因此 Node.js 平台也就不支持AbortController

在 DOM 规范里,AbortController设计得非常通用,因此事实上你可以用在任何异步 API 中。目前只得到 Fetch API 的官方支持,但你完全可以用在自己的异步代码里。

阅读全文