Библиотека Noty реализует уведомления в виде всплывающих сообщений, управляемых через очередь. Основная идея заключается в последовательной обработке уведомлений, что обеспечивает корректное отображение нескольких сообщений без их наложения или конфликтов.
Очередь уведомлений (queue) Каждое
создаваемое уведомление помещается в глобальную очередь. Она хранит
объекты уведомлений в порядке их добавления. Noty обрабатывает их по
принципу first in, first out (FIFO), что гарантирует, что
первое созданное уведомление будет показано первым.
Активные уведомления (current) Noty
отслеживает активные уведомления с помощью внутреннего массива или
счетчика. Если количество активных уведомлений достигает заданного
лимита (maxVisible), новые уведомления остаются в очереди
до освобождения места.
Обработчик отображения
(show/close) Метод
show() инициирует визуализацию уведомления. Если
уведомление не может быть показано из-за превышения лимита, оно остаётся
в очереди. Метод close() удаляет уведомление с экрана и
автоматически инициирует проверку очереди на наличие следующих
уведомлений.
Добавление уведомления:
const n = new Noty({
text: 'Сообщение',
type: 'alert',
timeout: 3000
}).show();
При вызове show() объект уведомления регистрируется в
очереди.
Проверка текущих активных уведомлений:
maxVisible
(по умолчанию 5), уведомление сразу отображается.Автоматическое продвижение очереди: При закрытии уведомления
(close() или таймаут) библиотека проверяет очередь. Если в
очереди есть ожидающие уведомления, следующее уведомление из начала
очереди автоматически отображается.
Noty позволяет гибко управлять поведением очереди через следующие параметры:
queue – указание имени очереди.
Несколько очередей могут существовать параллельно.maxVisible – максимальное количество
одновременно видимых уведомлений.timeout – время жизни уведомления,
после которого оно автоматически закрывается и освобождает место в
очереди.killer – при значении
true все предыдущие уведомления текущей очереди будут
закрыты при создании нового.Пример с пользовательской очередью:
const n1 = new Noty({
text: 'Первое сообщение',
queue: 'customQueue',
timeout: 2000
}).show();
const n2 = new Noty({
text: 'Второе сообщение',
queue: 'customQueue',
timeout: 2000
}).show();
Оба уведомления будут показаны поочередно в рамках одной очереди
customQueue.
Очередь обеспечивает следующие преимущества:
Noty предоставляет события, которые позволяют отслеживать состояние уведомлений в очереди:
onShow – срабатывает при отображении уведомления.onClose – срабатывает при закрытии уведомления,
инициируя показ следующего уведомления в очереди.onAfterClose – позволяет выполнять дополнительные
действия после удаления уведомления из DOM, например, обновление
состояния очереди.Использование этих событий позволяет создавать сложную логику управления уведомлениями, сохраняя последовательность и контроль.
maxVisible до 3–5 уведомлений для удобства
восприятия.timeout индивидуально для каждого типа
уведомлений, учитывая их важность и контекст.Очередь является ядром системы уведомлений Noty, обеспечивая плавное и управляемое отображение сообщений, минимизируя визуальный хаос и повышая удобство работы с интерфейсом.