循环节点
循环节点允许您通过迭代处理数组中的每个元素,并对其应用转换或操作。它的工作方式类似于JavaScript的map()
函数,输入一个数组,输出一个经过处理的数组。
概述
循环节点创建一个子工作流,对输入数组中的每个项目执行一次。每次迭代处理一个数组元素并产生相应的输出元素,保持相同的数组结构。
循环工作原理
可以将循环节点理解为JavaScript中的["x","y"].map()
函数:
- 输入:一个值的数组
- 处理:每个数组元素都通过子工作流进行处理
- 输出:一个新数组,其中每个元素对应处理后的结果
循环节点包含一个嵌入式子工作流,由两个必需的节点组成:
- 开始循环一次 - 每个循环周期的入口点
- 结束循环一次 - 定义每次迭代输出的出口点
子工作流结构
每个循环节点都包含:
开始循环一次节点
此节点为每次迭代提供两个变量:
$循环开始.item
- 当前数组元素的值$循环开始.index
- 当前数组元素的索引(从0开始)
结束循环一次节点
此节点决定每次迭代返回的内容。此节点导出的值将成为输出数组中的相应元素。
配置每次迭代要导出的数据。所选的输出变量决定了最终结果数组中的内容。
配置说明
节点名称
为您的循环操作设置一个描述性名称。
循环变量
选择包含要迭代的数组的变量。变量必须是:
- 数组类型(可解析为JSON数组)
- 例如:
["a", "b", "c"]
将迭代3次 - 非数组类型的值将被视为单元素数组
循环间隔
设置迭代之间的延迟时间,单位为秒。默认为0(无延迟)。
输出
循环节点输出$循环1.result
- 包含每次迭代结果的数组。
使用案例示例
1. 文本处理
处理字符串数组,对每个字符串应用转换:
- 输入:
["hello", "world", "flowai"]
- 子工作流:转换为大写
- 输出:
["HELLO", "WORLD", "FLOWAI"]
2. 数据丰富
用附加信息增强数组数据:
- 输入:
[{"id": 1}, {"id": 2}, {"id": 3}]
- 子工作流:为每个ID获取用户详细信息
- 输出:
[{"id": 1, "name": "John"}, {"id": 2, "name": "Jane"}, ...]
3. API批量处理
为不同参数进行多个API调用:
- 输入:
["product1", "product2", "product3"]
- 子工作流:获取每个产品的价格
- 输出:
[99.99, 149.99, 79.99]
最佳实践
- 性能:注意循环计数限制(最多500次迭代)
- 频率限制:在进行外部API调用时使用循环间隔
- 错误处理:考虑如何处理单个迭代中的失败
- 数据类型:确保循环变量正确格式化为数组
- 输出结构:规划结束循环一次节点需要的数据结构
常见模式
简单值转换
当您需要转换每个数组元素时使用:
- 配置结束循环一次以输出转换后的值
- 保持相同的数组结构
数据聚合
当您需要收集每个元素的信息时使用:
- 配置结束循环一次以输出丰富的对象
- 将原始数据与新计算的数据相结合
带处理的过滤
与条件节点结合以选择性地处理数组元素:
- 在子工作流中使用条件
- 根据条件输出不同的值