Vercel News

Workflow SDK now supports inflight cancellation

8.5内容质量

TL;DR · AI 摘要

Workflow SDK 5 beta 现支持 AbortController 和 AbortSignal API,实现跨工作流和步骤的中止操作。

核心要点

  • Workflow SDK 5 beta 支持 AbortController 和 AbortSignal API。
  • AbortSignal 可跨工作流和步骤传递,实现中止操作。
  • 中止操作可用于超时、取消剩余请求、多步骤流水线等场景。

结构提纲

按章节快速跳转。

  1. Workflow SDK 5 beta 现支持 AbortControllerAbortSignal API,实现跨工作流和步骤的中止操作。

  2. 在工作流中创建 AbortController,并将其信号传递给一个或多个步骤,以取消正在进行的操作。

  3. 示例代码展示了如何使用 AbortController 和 AbortSignal 实现可取消的工作流。

  4. AbortSignal 可跨暂停和确定性重放保持持久,即使在不同的函数调用中也能看到中止信号。

  5. 中止操作可用于超时、取消剩余请求、多步骤流水线等场景。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Workflow SDK 5 beta 支持中止操作
    • AbortController 和 AbortSignal API
      • 跨工作流和步骤传递信号
      • 支持中止操作的场景
    • 中止操作的特性
      • 信号持久性
      • 协作式中止

金句 / Highlights

值得收藏与分享的关键句。

  • The Workflow SDK 5 beta now supports the standard AbortController and AbortSignal APIs across workflow and step boundaries.

    第 1 段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • That signal stays durable across suspensions and deterministic replay.

    第 3 段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • Use it to stop a slow step when a durable timeout wins a race, cancel the remaining requests after the first successful response, thread one signal through a multi-step pipeline, or cancel parallel wo

    第 4 段

    ⬇︎ 下载 PNG𝕏 分享到 X
#Workflow SDK#AbortSignal#Vercel#前端
打开原文

Workflow SDK 现在支持进行中的取消操作 - Vercel

1 分钟阅读

复制链接

2026 年 6 月 16 日

Workflow SDK 5 beta 版现在支持在工作流和步骤边界之间使用标准的 AbortController 和 AbortSignal API。

在工作流中创建一个控制器,将其信号传递给一个或多个步骤,并使用与 fetch 已经使用的相同 API 取消正在进行的操作。

code
1
import
{
sleep
}
from
"workflow"
;
2
3
export
async
function
cancellableWorkflow
(
)
{
4
"use workflow"
;
5
6
const
controller
=
new
AbortController
(
)
;
7
8
const
result
=
await
Promise
.
race
(
[
9
fetchReport
(
controller
.
signal
)
,
10
sleep
(
"30s"
)
.
then
(
(
)
=>
null
)
,
11
]
)
;
12
13
if
(
result
===
null
)
{
14
controller
.
abort
(
)
;
15
return
{
status
:
"timed-out"
}
;
16
}
17
18
return
result
;
19
}
20
21
async
function
fetchReport
(
signal
:
AbortSignal
)
{
22
"use step"
;
23
24
const
response
=
await
fetch
(
"https://api.example.com/report"
,
{
25
signal
,
26
}
)
;
27
28
return
response
.
json
(
)
;
29
}

将信号传递给步骤并取消正在进行的操作

该信号在暂停和确定性重播过程中保持持久。当一个步骤正在运行时,它会看到取消操作,即使它在另一个函数调用中。取消操作也是协作的;步骤必须检查信号或将其传递给支持 AbortSignal 的 API。

使用它来在持久超时赢得比赛时停止一个缓慢的步骤,取消在第一个成功响应之后的剩余请求,将一个信号通过多步骤管道,或在外部条件变化时取消并行工作。

使用 workflow@beta 尝试一下,并阅读取消操作文档以了解更多。