Run.startAsync()
.startAsync() 方法會啟動 Workflow run,但不等待其完成。它會立即回傳 runId,讓 Workflow 在背景執行。這適合長時間執行的 Workflow 或排程工作,也能避免因等待 Workflow 完成而阻塞。
使用範例「使用範例」的直接連結
const run = await workflow.createRun()
// Fire-and-forget - returns immediately
const { runId } = await run.startAsync({
inputData: {
value: 'initial data',
},
})
// Optionally poll for completion later
const result = await workflow.getWorkflowRunExecutionResult(runId)
參數「參數」的直接連結
inputData?:
z.infer<TInput>
符合 Workflow 輸入 schema 的輸入資料
requestContext?:
RequestContext
Workflow 執行期間使用的 Request Context 資料
initialState?:
z.infer<TState>
Workflow 執行使用的初始狀態
tracingOptions?:
TracingOptions
Tracing 設定選項。
metadata?:
Record<string, any>
要新增至根 Trace span 的中繼資料。適合新增使用者 ID、工作階段 ID 或功能旗標等自訂屬性。
traceId?:
string
此執行要使用的 Trace ID(1 至 32 個十六進位字元)。若有提供,此 Trace 會成為指定 Trace 的一部分。
outputOptions?:
OutputOptions
輸出設定選項。
includeState?:
boolean
是否在結果中包含 Workflow run 狀態。
回傳值「回傳值」的直接連結
runId:
string
此 Workflow run 的唯一識別碼。可用來稍後檢查狀態或擷取結果。
使用 startAsync() 的時機「when-to-use-startasync」的直接連結
在下列情況下,請使用 startAsync(),而非 start():
- 長時間執行的 Workflow:Workflow 可能需要數分鐘或數小時才能完成
- 排程/cron 觸發處理程序:你想觸發 Workflow,但不希望阻塞排程器
- 避免輪詢失敗:使用 Inngest Workflow 時,
start()會輪詢完成狀態;輪詢可能失敗並導致重試。startAsync()可避開此問題 - 背景處理:你想將工作排入佇列,並以非同步方式處理結果
檢查 Workflow 狀態「檢查 Workflow 狀態」的直接連結
呼叫 startAsync() 後,可以使用下列方式檢查 Workflow 狀態:
// Get the execution result (including step outputs)
const result = await workflow.getWorkflowRunExecutionResult(runId)
if (result?.status === 'success') {
console.log('Workflow completed:', result.steps)
} else if (result?.status === 'failed') {
console.log('Workflow failed:', result.error)
} else if (result?.status === 'running') {
console.log('Workflow still running...')
}
相關內容「相關內容」的直接連結
- Run.start():啟動 Workflow 並等待其完成
- Workflows 概觀
- Workflow.createRun()