Reference

Loop

O bloco Loop é um container que roda os blocos dentro dele repetidamente — sobre cada item de uma coleção, um número fixo de vezes, ou enquanto uma condição vale. Solte blocos dentro dele e eles rodam uma vez por iteração. Iterações rodam uma após a outra; para trabalho concorrente, use um bloco Parallel.

Tipos de loop

Um loop For roda um número fixo de vezes. Defina a contagem de iterações.

Um loop ForEach roda uma vez por item em um array ou objeto, expondo o item atual como <loop.currentItem>.

Um loop While roda enquanto uma condição for verdadeira. A condição é checada antes de cada iteração, então o body pode rodar zero vezes.

Um loop Do-While roda o body uma vez e depois repete enquanto uma condição for verdadeira. A condição é checada depois de cada iteração, então o body sempre roda pelo menos uma vez.

Configuração

Defina o tipo de loop e depois o valor de que ele precisa:

  • Iterations — quantas vezes rodar (loops For)
  • Collection — o array ou objeto a iterar (loops ForEach)
  • Condition — a expressão booleana a checar (loops While e Do-While)

Referenciando dados do loop

As referências diferem dentro do loop e depois dele.

Dentro do loop, leia a iteração atual com <loop.*>:

  • <loop.index> — o número da iteração, começando em 0
  • <loop.currentItem> — o item atual (só ForEach)
  • <loop.items> — a coleção completa (só ForEach)
const idx = <loop.index>;        // 0, 1, 2, ...
const item = <loop.currentItem>; // the current item

Esses só estão disponíveis para blocos dentro do container do loop.

Depois do loop, leia os resultados coletados pelo nome do bloco loop — não <loop.*>:

// a loop named "Process Items"
const all = <processitems.results>; // [result1, result2, ...]

O nome é normalizado — minúsculas, sem espaços. <loop.*> só funciona dentro.

Exemplos

Um loop ForEach pontua cada review e coleta os resultados; depois que o loop termina, um Agent resume <loop.results>. O mesmo container segura os blocos para qualquer tipo de loop:

  • Processar resultados de APIAPI (Fetch) → Loop (ForEach) → Agent (Analyze) → Function (Store)
  • Gerar variaçõesLoop (5×) → Agent (Generate) → Evaluator (Score) → Function (Select best)
  • Contador com WhileVariables (i=0) → Loop (While i<10) → Agent (Process) → Variables (i++)

Aninhamento e limites

Containers aninham. Você pode colocar loops dentro de loops, parallels dentro de loops e qualquer combinação, para construir workflows multidimensionais.

Loops For e ForEach têm teto de 1.000 iterações. Loops While e Do-While rodam até a condição ser falsa, sem teto rígido — garanta que a condição eventualmente fique falsa para o loop terminar.

Boas práticas

  • Use ForEach para coleções. Quando você tem um array ou objeto, ForEach é mais claro que um loop For com indexação manual.
  • Mantenha contagens de iteração razoáveis. Cada iteração soma ao tempo total de execução, já que o loop roda sequencialmente.
  • Use Parallel quando a ordem não importa. Trabalho independente sobre uma coleção roda mais rápido num bloco Parallel.
  • Garanta uma saída. Para loops While e Do-While, garanta que a condição vai ficar falsa.

Common Questions

Loops For e ForEach têm teto de 1.000 iterações. Loops While e Do-While com condição não têm teto rígido — rodam até a condição ser falsa. Um Do-While sem condição cai numa contagem fixa, também limitada a 1.000. Sempre garanta que condições While/Do-While eventualmente fiquem falsas para evitar loops infinitos.
Sequencialmente, uma após a outra. Para concorrência entre itens, use o bloco Parallel, ou aninhe um Parallel dentro de um Loop se precisar dos dois padrões.
Use <loop.currentItem> para o item atual e <loop.index> para o número da iteração baseado em zero. Esses só estão disponíveis para blocos dentro do container do loop.
Referencie o bloco loop pelo nome normalizado (minúsculas, sem espaços) com <blockname.results>, que retorna um array de todos os resultados de iteração em ordem. Não use <loop.*> fora do loop — isso só funciona dentro.
Sim. Loops e Parallels suportam aninhamento completo em qualquer combinação, e cada container aninhado mantém seu próprio escopo e contexto de iteração.
Um loop While checa a condição antes de cada iteração, então pode rodar zero vezes. Um Do-While roda o body uma vez e depois checa a condição, então sempre roda pelo menos uma vez.
O body é pulado e o loop produz um array results vazio. O workflow continua para o que estiver conectado depois do loop.

On this page