EnotPRO Logo EnotPRO

Break

Break — полностью завершает выполнение ближайшего цикла For и продолжает выполнение реакций после цикла.

📝 Назначение

Используется внутри цикла For для досрочного выхода из цикла. Все оставшиеся итерации пропускаются, выполнение продолжается с реакции, следующей за циклом.

Когда это нужно:

  • Найден нужный элемент — дальше искать не нужно
  • Достигнуто максимальное количество успешных операций
  • Возникла ошибка, при которой продолжение цикла невозможно

💡 Совет: Break обычно ставится под условием (через требования реакции), иначе цикл завершится после первой итерации.

⚙️ Параметры

У реакции нет параметров. Она всегда действует на ближайший окружающий цикл For.

🧪 Примеры использования

Пример 1: Поиск элемента в списке

Задача: Найти пользователя с ID 12345 и остановить поиск.

Реакции:

  1. ForСписок: ${var.local.users}
  • Внутри: TriggerFolder с условием: ${loop.item.id} == 12345

  • Внутри: SetVarLocalfound_user = ${loop.item}

  • Внутри: Break

  • Внутри (после условия): (пропустить, если не нашли)

  1. SendMessage → текст: Пользователь найден: ${var.local.found_user.name}

Пример 2: Ограничение количества обработанных элементов

Задача: Обработать не более 3 элементов из списка.

Реакции:

  1. ForСписок: ${var.local.items}
  • Внутри: SendMessage → текст: Обработка: ${loop.item}

  • Внутри: TriggerFolder с условием: ${loop.i + 1} >= 3

  • Внутри: Break

  1. SendMessage → текст: Обработка завершена (максимум 3 элемента)

Пример 3: Выход из цикла при ошибке

Задача: Отправлять сообщения пользователям, но прекратить при первой ошибке.

Реакции:

  1. ForСписок: ${var.local.user_ids}
  • Внутри: SendMessagechat_id: ${loop.item}, текст: Уведомление

  • Внутри: TriggerFolder с условием: проверка ошибки отправки

  • Внутри: Break

  1. SendMessage → текст: Рассылка прервана из-за ошибки

Пример 4: Break во вложенном цикле

Задача: Выйти только из внутреннего цикла, продолжить внешний.

Реакции:

  1. ForИтерации: 3 (внешний)
  • Внутри: ForИтерации: 5 (внутренний)

  • Внутри: TriggerFolder с условием: ${loop.j} >= 2

  • Внутри: Break (выход из внутреннего цикла)

  • Внутри: SendMessage → текст: Внутренний цикл: ${loop.j}

  • Внутри (после внутреннего цикла): SendMessage → текст: Внешний цикл: ${loop.i}

Результат:

  • Внешний цикл выполняет все 3 итерации
  • Внутренний цикл на каждой итерации внешнего выполняет только 2 итерации (j = 0, 1)

Пример 5: Break по достижению цели

Задача: Найти первое положительное число в списке.

Реакции:

  1. SetVarLocalnumbers: [-5, -2, 0, 3, 8, -1]
  2. SetVarLocalfirst_positive: null
  3. ForСписок: ${var.local.numbers}
  • Внутри: TriggerFolder с условием: ${loop.item} > 0

  • Внутри: SetVarLocalfirst_positive = ${loop.item}

  • Внутри: Break

  1. TriggerFolder с условием: ${var.local.first_positive} != null
  • Внутри: SendMessage → текст: Первое положительное число: ${var.local.first_positive}
  • Иначе: SendMessage → текст: Положительных чисел не найдено

🔄 Особенности поведения

Ситуация Поведение
Break вне цикла For Реакция не имеет эффекта (ошибки нет)
Break без условия Цикл завершается после первой итерации
Break во вложенном цикле Завершает только внутренний цикл, внешний продолжается
Break после Continue Недостижим (Continue переходит к следующей итерации)
Несколько Break в одном цикле Сработает первый достигнутый

🔗 Связанные реакции

Реакция Назначение
For Организация цикла
Continue Переход к следующей итерации
Exit Остановка выполнения триггера
© 2025 EnotPRO. Все права защищены.