Skip to main content

Очередь задач (Queue)

Queue — центральный оркестратор Ziva. Он последовательно запускает задачи, управляет отображением статусов и обеспечивает единый цикл ввода/вывода в терминале.

Создание и запуск

Скриншот: итоговая сводка очереди
Сохраняйте ссылки на созданные задачи, если нужно считать их результат после Run().

Добавление задач

Задачи запускаются в том порядке, в котором были добавлены. Повторно использовать одну и ту же очередь не рекомендуется — создавайте новую под каждый сценарий.

Настройка отображения

Имя приложения и заголовок

Для цветов используйте функции lipgloss.Color() либо готовые константы Ziva (ziva.BlueBright, ziva.GrayDark и т.д.).

Нумерация задач

Первый параметр (keepFirstSymbol) определяет, нужно ли сохранять символ завершения (, ) для первой задачи. Формат — любая строка для fmt.Sprintf.

Сводка и разделительные линии

Даже при отключенной сводке статусы задач и их результаты остаются доступными прямо в выводе.

Очистка экрана

Полезно, если приложение должно стартовать «с чистого листа». Для встроенных устройств, наоборот, часто удобно оставить вывод предыдущих команд.

Чтение результатов задач

Данные хранятся внутри объектов задач. Вам не нужно передавать дополнительные колбэки — достаточно доступа к экземплярам.

Обработка ошибок и отмены

  • Пользователь может прервать очередь (Ctrl+C). В этом случае Run() вернёт ошибку, которую можно обработать.
  • Используйте FuncTask.WithStopOnError(true), чтобы оборвать очередь при сбое важной операции.
  • Для дружелюбного вывода сообщений об ошибке изменяйте глобальные цвета через ziva.SetErrorColor().

Производительность и ресурсы

Ziva содержит встроенные механизмы контроля памяти. Их удобно конфигурировать через переменные окружения:
Для сред с ограниченными ресурсами:

Лучшие практики

  • Минимизируйте побочные эффекты в задачах. Пусть каждая задача отвечает только за свой ввод/вывод.
  • Готовьте данные заранее. Формируйте списки вариантов и дефолтные значения до создания задач.
  • Логируйте за пределами очереди. Queue управляет только TUI. Используйте отдельные журналы для внутреннего состояния приложения.
  • Сохраняйте результаты. После Run() извлеките значения и сохраните их в собственных структурах, пока пользователь помнит контекст.
  • Разделяйте сценарии. Лучше несколько небольших очередей, чем одна гигантская — пользователю проще ориентироваться.

Связанные материалы