N8N中文教程
集成节点/Built in_nodes/Core_nodes

逐项循环处理#

逐项循环处理节点可帮助您在需要时遍历数据。 该节点会保存原始输入数据,并在每次迭代时通过 loop 输出端口返回预设数量的数据。 当节点执行完成后,它会将所有已处理数据合并,并通过 done 输出端口返回。

何时使用逐项循环处理节点#

默认情况下,n8n 节点被设计为处理输入项列表(除以下列出的特殊情况外)。根据您要实现的目标,工作流中通常不需要使用逐项循环处理节点。您可以在 n8n 循环机制 页面了解更多关于 n8n 如何处理多项信息。

以下链接重点说明了逐项循环处理节点可能适用的场景:

  • 循环直至所有项处理完成:说明逐项循环处理节点与常规项处理的区别,以及何时可能需要使用此节点。
  • 节点异常情况:列举可能需要使用逐项循环处理节点手动构建循环逻辑的具体案例和节点。
  • 避免速率限制:演示如何通过批量处理 API 请求来避免其他服务的速率限制。

节点参数#

批次大小#

输入每次调用返回的项目数量。

节点选项#

重置#

如果开启此选项,节点将在每次循环时重置并使用当前输入数据重新初始化。当您希望"循环处理项目"节点将传入数据视为新数据集而非先前项目的延续时,请使用此选项。

例如,当您需要查询分页服务但无法预先确定所需页数时,可以配合使用"循环处理项目"节点的重置选项和条件判断节点。循环会逐页查询,执行相应处理,并递增页码。循环重置功能确保循环将每次迭代识别为新数据集。条件判断节点则通过评估退出条件来决定是否继续执行后续迭代。

重要:包含有效的终止条件 对于上述示例类工作流,必须为循环设置有效的终止条件。如果终止条件始终无法匹配,您的工作流执行将陷入无限循环。

启用该选项后,您可以通过将参数表示从固定值切换为表达式来调整重置条件。表达式评估结果将决定节点何时重置项目处理。

模板与示例#

无需第三方API从Google Maps抓取企业邮箱 作者:Akram Kadri 查看模板详情

通过Google Maps生成潜在客户 作者:Alex Kim 查看模板详情

将n8n工作流备份至Github 作者:Jonathan 查看模板详情

浏览循环处理项目(分批处理)集成模板,或搜索所有模板

从两个不同源读取RSS订阅#

该工作流演示了如何使用"循环处理项目"节点从两个不同源读取RSS订阅。由于RSS订阅读取节点仅处理接收到的首项数据,因此需要在工作流中使用"循环处理项目"节点。您也可以在n8n.io上找到此工作流。

本示例将逐步演示工作流构建过程,但默认您已熟悉n8n基础操作。如需了解如何构建首个工作流(包括添加节点的方法),请参考快速入门。

最终工作流效果如下: 查看工作流文件

复制上方工作流文件并粘贴至您的实例,或通过以下步骤手动构建:

  1. 添加手动触发节点
  2. 添加代码节点
  3. 将以下代码复制到代码节点中:
return[
{
json:{
url:'https://medium.com/feed/n8n-io',
}
},
{
json:{
url:'https://dev.to/feed/n8n',
}
}
];
  4. 添加 Loop Over Items 节点。
  5. 配置 Loop Over Items:在 **Batch Size** 字段中将批次大小设置为 `1`。
  6. 添加 RSS Feed Read 节点。
  7. 选择 **Execute Workflow**。这将运行工作流,将数据加载到 RSS Feed Read 节点中。
  8. 配置 RSS Feed Read:将输入中的 `url` 映射到 **URL** 字段。可以通过从 **INPUT** 面板拖放,或使用此表达式实现:`{{ $json.url }}`。
  9. 选择 **Execute Workflow** 运行工作流并查看结果数据。

### 检查节点是否已处理所有条目#
要检查节点是否仍有待处理的条目,请使用以下表达式:`{{$node["Loop Over Items"].context["noItemsLeft"]}}`。该表达式返回布尔值。如果节点仍有待处理数据,表达式返回 `false`,否则返回 `true`。
### 获取节点的当前运行索引#
要获取节点的当前运行索引,请使用以下表达式:`{{$node["Loop Over Items"].context["currentRunIndex"];}}`。