From e653a5226524a94d34ef2d8fc3662e82c280006b Mon Sep 17 00:00:00 2001 From: icarus Date: Fri, 29 Aug 2025 22:04:53 +0800 Subject: [PATCH] =?UTF-8?q?feat(abortController):=20=E6=B7=BB=E5=8A=A0read?= =?UTF-8?q?yToAbort=E5=87=BD=E6=95=B0=E7=94=A8=E4=BA=8E=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E5=B9=B6=E6=B3=A8=E5=86=8CAbortController?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 提供便捷方法创建AbortController并自动注册到全局映射中,简化取消操作的流程 --- src/renderer/src/utils/abortController.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/renderer/src/utils/abortController.ts b/src/renderer/src/utils/abortController.ts index 6593b1c162..614b7b068f 100644 --- a/src/renderer/src/utils/abortController.ts +++ b/src/renderer/src/utils/abortController.ts @@ -49,3 +49,25 @@ export function createAbortPromise(signal: AbortSignal, finallyPromise: Promi }) }) } + +/** + * 创建一个新的 AbortController 并将其注册到全局的 abort 映射中 + * @param key - 用于标识此 AbortController 的唯一键值 + * @returns AbortSignal - 返回 AbortController 的信号 + * @example + * ```typescript + * const signal = readyToAbort('uniqueKey'); + * fetch('https://api.example.com/data', { signal }) + * .then(response => response.json()) + * .catch(error => { + * if (error.name === 'AbortError') { + * console.log('Fetch aborted'); + * } + * }); + * ``` + */ +export function readyToAbort(key: string) { + const controller = new AbortController() + addAbortController(key, controller.abort) + return controller.signal +}