跳到主要内容

循环执行

循环节点用于让子流程重复执行,支持四种循环模式。

概述

填写循环名后,节点自动生成两个循环变量供循环体内使用:

  • {{循环名.index}} — 当前迭代索引(从 0 开始)
  • {{循环名.value}} — 当前迭代的值

节点有两个输出端口:Body 连接循环体(每次迭代执行),Completed 连接循环结束后的下游节点。

循环状态(索引、队列、水位线)会在每次迭代间持久化存储,刷新页面后不会丢失进度。

循环执行节点参数配置面板

使用方法

拖入节点后,先填写「循环名」,然后选择循环模式。

计数模式

从起始数字到结束数字逐个迭代。内部逻辑为 开始值 + index,当 当前值 < 结束值 时继续循环。

注意:结束值是不包含的(类似 Python 的 range),不是"小于等于"。

循环名: i,开始: 1,结束: 3
第 1 次: i.index=0, i.value=1 (1 < 3 ✓)
第 2 次: i.index=1, i.value=2 (2 < 3 ✓)
循环结束 (3 < 3 ✗)

适合"重复执行 N 次"的场景。

数组模式

遍历数组的每个元素。数组内容通过 JSON5 格式输入,会被解析后放入消费队列,每次迭代从队列头部取出一个元素(shift),队列为空时循环结束。

循环名: user,数组: ["张三", "李四", "王五"]
队列初始: ["张三", "李四", "王五"]
第 1 次: user.index=0, user.value="张三" (队列剩 ["李四", "王五"])
第 2 次: user.index=1, user.value="李四" (队列剩 ["王五"])
第 3 次: user.index=2, user.value="王五" (队列剩 [])
循环结束

适合"对列表中每个元素执行相同操作"的场景。

变量模式

引用一个上游变量进行迭代。根据变量类型自动选择策略:

  • 变量为数字(如 5):按计数模式执行,index 从 0 到 N-1,value 即为 indexindex < 变量值 时继续。
  • 变量为数组或其他:按增量队列模式执行。只有新出现的元素会加入消费队列(通过 globalCursor 水位线去重),已消费过的元素不会重复处理。
# 数字变量
循环名: i,引用变量: {{count}} (count = 3)
第 1 次: i.index=0, i.value=0
第 2 次: i.index=1, i.value=1
第 3 次: i.index=2, i.value=2
循环结束

# 数组变量
循环名: item,引用变量: {{dataList}} (dataList = ["A", "B", "C"])
→ 依次消费 "A" "B" "C",与数组模式行为一致
→ 如果循环过程中 dataList 新增了元素,下一轮会自动追加到队列末尾

条件模式

当条件满足时持续循环,条件不满足时跳出。条件构建器的使用方式与「条件分支」一致——配置左值、操作符和右值,每次迭代前动态解析变量值并重新判断。

注意:条件模式是最容易写出无限循环的模式。确保每次迭代都会改变条件中引用的变量值,让条件最终变为 False,否则流程永远不会跳出。

参数参考

参数类型默认值说明
循环名文本必填。循环标识符,同时用于生成 {{循环名.index}}{{循环名.value}}
循环模式下拉选择rangerange — 计数;array — 数组;variable — 变量;condition — 条件
开始数字1计数模式 — 起始数字
结束数字10计数模式 — 结束数字(不包含,当前值 < 结束值时继续)
数组array数组模式 — JSON5 格式数组,如 ["A","B","C"]
引用变量文本变量模式 — 引用已存在的变量。数字则按计数循环,其他按数组循环
判断条件ConditionBuilder条件模式 — 满足条件时持续循环,条件为 False 时跳出

常见问题

无限循环停不下来

现象:流程进入循环后无法跳出。

原因:条件模式下的条件始终满足,循环体内没有改变条件引用的变量值。

解决:确认循环体内有步骤在改变条件中引用的变量,使条件最终变为 False。计数/数组/变量模式有明确的迭代终点,不会无限循环。

计数模式的执行次数比预期少

现象:设置开始 1、结束 3,期望执行 3 次,实际只执行了 2 次。

原因:结束值是不包含的(< 而非 <=)。start + index < end 时继续,所以 3 < 3 为 False 直接结束。

解决:如果需要包含结束值,将结束值设为 期望值 + 1。例如要执行 3 次(1, 2, 3),设置结束为 4。