Run.cancel()
.cancel() 方法會取消 Workflow 執行,停止執行流程並清理資源。
此方法會中止任何正在執行的步驟,並將 Workflow 狀態更新為 'canceled'。它同時適用於正在執行以及已暫停/等待中的 Workflow。
使用範例使用範例 的直接連結
const run = await workflow.createRun()
await run.cancel()
// Returns: { message: 'Workflow run canceled' }
參數參數 的直接連結
沒有參數:
void
此方法不接受任何參數
傳回值傳回值 的直接連結
result:
Promise<{ message: string }>
取消成功時,會解析為 { message: 'Workflow run canceled' } 的 Promise
取消機制取消機制 的直接連結
呼叫此方法時,Workflow 將會:
- 觸發中止訊號 - 使用標準 Web API AbortSignal 通知正在執行的步驟
- 阻止後續步驟 - 不會再執行任何後續步驟
中止訊號的行為中止訊號的行為 的直接連結
檢查 abortSignal 參數的步驟可以回應取消操作:
- 步驟可以監聽 'abort' 事件:
abortSignal.addEventListener('abort', callback) - 步驟可以檢查是否已中止:
if (abortSignal.aborted) { ... } - 適合用來取消逾時、網絡請求或長時間執行的操作
步驟必須主動檢查中止訊號,才能在執行途中取消;否則目前步驟會執行至完成,而後續步驟則不會執行。
延伸使用範例延伸使用範例 的直接連結
發生錯誤時取消 Workflow發生錯誤時取消 Workflow 的直接連結
const run = await workflow.createRun()
try {
const result = await run.start({ inputData: { value: 'initial data' } })
} catch (error) {
await run.cancel()
}
建立可回應取消操作的步驟建立可回應取消操作的步驟 的直接連結
const step = createStep({
id: 'long-running-step',
execute: async ({ inputData, abortSignal, abort }) => {
const timeout = new Promise(resolve => {
const timer = setTimeout(() => resolve('done'), 10000)
// Clean up if canceled
abortSignal.addEventListener('abort', () => {
clearTimeout(timer)
resolve('canceled')
})
})
const result = await timeout
// Check if aborted after async operation
if (abortSignal.aborted) {
return abort() // Stop execution
}
return { result }
},
})