有些節點天生只吃單一 item(或你想分批打 API 以避免限流),這時就交給 Loop Over Items。
它會保存原始輸入,每回合從清單裡吐出 Batch Size 指定數量到 loop 輸出,等全部處理完,再把結果合併後從 done 輸出一次丟回主線。
典型用途:
- 下游節點只處理第一筆 → 以
Batch Size=1
逐筆餵。 - 需要「直到清單處理完」的流程控制。
- 分批呼叫外部服務,降低速率限制風險。
核心設定很單純:
- Batch Size:每回合要送出的筆數。
- Reset:開啟後每次循環會以當前輸入重新初始化(用於動態更新來源清單)。
再加上兩個好用的狀態表達式: - 是否處理完:
{{$node["Loop Over Items"].context["noItemsLeft"]}}
- 目前回合索引:
{{$node["Loop Over Items"].context["currentRunIndex"]}}
Loop Over Items 節點
Loop Over Items 節點幫助您在需要時循環處理數據。
該節點保存原始傳入數據,並在每次迭代中通過 loop 輸出返回預定義數量的數據。當節點執行完成時,它合併所有處理過的數據並通過 done 輸出返回。
何時使用
默認情況下,n8n 節點設計為處理輸入項目列表。在以下情況下,Loop Over Items 節點特別有用:
- 需要循環直到處理完所有項目
- 處理特定節點例外情況
- 避免來自其他服務的速率限制
節點參數
Batch Size:輸入每次調用要返回的項目數。
Reset:如果啟用,節點將在每次循環時重置,並使用當前輸入數據重新初始化。
Loop Over Items – 實例演示
以下是一個從兩個不同來源讀取 RSS 訂閱的工作流程示例:
添加手動觸發器
開始創建工作流程,添加手動觸發器節點。
添加 Code 節點
添加 Code 節點並輸入以下代碼:
return [
{ json: { url: 'https://medium.com/feed/n8n-io' } },
{ json: { url: 'https://dev.to/feed/n8n' } }
];
添加 Loop Over Items 節點
配置 Loop Over Items:在 Batch Size 字段中設置批量大小為 1。
添加 RSS Feed Read 節點
將 url 從輸入映射到 URL 字段:{{ $json.url }}
在這個例子中,需要 Loop Over Items 節點是因為 RSS Feed Read 節點只處理它接收的第一個項目。
Loop Over Items – 檢查節點狀態
您可以使用表達式檢查 Loop Over Items 節點的狀態:
檢查節點是否已處理所有項目
使用以下表達式:
{{$node["Loop Over Items"].context["noItemsLeft"]}}
如果節點仍有數據要處理,表達式返回 false,否則返回 true。
獲取節點的當前運行索引
使用以下表達式:
{{$node["Loop Over Items"].context["currentRunIndex"];}}
這將返回節點當前正在處理的項目索引。
這些表達式對於創建複雜的循環邏輯和控制工作流程執行非常有用。
總結
- 什麼時候用:
- 下游節點只看第一筆;2) 想確保一筆筆處理;3) 要分批打 API/避免限流。
- 怎麼設:
Batch Size
決定每回合出貨量;- 需要依「最新輸入」重跑回合時才開 Reset。
- 實戰心法:
- 搭配 Wait/Rate Limit 在迴圈中節流更穩。
- 需逐筆帶入欄位(如 URL),用
{{ $json.<field> }}
於 loop 分支對應。 - 用
noItemsLeft
在最後一回合後分支到收尾/通知。 - 需要固定順序就先 Sort 再進 Loop。
- 常見坑:
- 忘了設
Batch Size=1
,下游仍只處理第一筆 → 其餘會被跳過。 - 不必要地開 Reset 可能導致重複初始化。
- 回合內大量 payload 合併,注意記憶體;必要時先 Filter/Limit 精簡欄位。
- 忘了設
把 Loop Over Items 放在「多筆→逐筆」的關卡,你的工作流就能既準確又可控,順利通過限流與單筆節點的限制。