Очистка очереди

Библиотека Noty предоставляет мощный механизм управления уведомлениями в браузере с использованием очереди сообщений. Когда создается несколько уведомлений, они добавляются в очередь и отображаются последовательно. Иногда возникает необходимость очистки очереди, чтобы убрать все ожидающие уведомления и предотвратить их отображение.

Основные методы управления очередью

В Noty для управления очередью используются следующие методы:

  • Noty.closeAll() — немедленно закрывает все активные уведомления, а также очищает очередь от ожидающих.
  • notyInstance.close() — закрывает конкретное уведомление, если известен его экземпляр.
  • Очистка очереди без закрытия активных уведомлений — реализуется с помощью внутреннего доступа к объекту очереди через Noty.queue.

Использование Noty.closeAll()

Метод Noty.closeAll() является самым простым способом очистки всех уведомлений и очереди:

// Создание нескольких уведомлений
new Noty({ text: 'Первое уведомление', timeout: 5000 }).show();
new Noty({ text: 'Второе уведомление', timeout: 5000 }).show();
new Noty({ text: 'Третье уведомление', timeout: 5000 }).show();

// Очистка очереди и закрытие всех уведомлений
Noty.closeAll();

Особенности метода:

  • Метод закрывает все активные уведомления, независимо от их текущего состояния.
  • Очистка очереди предотвращает появление любых новых уведомлений, которые еще не были показаны.
  • Можно передать параметр animation, чтобы указать, с какой анимацией закрывать уведомления:
Noty.closeAll({ animation: 'fade' });

Очистка очереди без закрытия активных уведомлений

Иногда необходимо удалить только ожидающие уведомления, оставив видимыми те, которые уже отображаются на экране. Для этого используется доступ к очереди через Noty.queue:

// Очистка очереди без закрытия активных уведомлений
Noty.queue = [];

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

Удаление отдельных уведомлений из очереди

Каждое уведомление, созданное с помощью new Noty(), возвращает объект-экземпляр. Для удаления конкретного уведомления до его показа можно использовать комбинацию методов:

let myNoty = new Noty({ text: 'Это уведомление может быть удалено', timeout: false });
myNoty.show();

// Закрытие уведомления через некоторое время
setTimeout(() => {
    myNoty.close();
}, 3000);

Если уведомление еще не было показано, вызов close() удаляет его из очереди.

Контроль порядка уведомлений

Очередь в Noty работает по принципу FIFO (первым пришел — первым показан). Очистка очереди позволяет полностью сбросить порядок уведомлений, что полезно в следующих случаях:

  • Пользователь выполняет действие, которое делает старые уведомления неактуальными.
  • Необходимо освободить интерфейс от накопившихся уведомлений при динамическом обновлении страницы.
  • Тестирование или отладка, когда нужно проверить поведение уведомлений без старых сообщений.

Рекомендации по использованию

  • Для предотвращения “захламления” интерфейса лучше комбинировать очистку очереди с ограничением количества одновременно отображаемых уведомлений через параметр maxVisible.
  • Использовать Noty.closeAll() при переходе между страницами или при обновлении данных, чтобы старые уведомления не появлялись после изменения состояния.
  • Не рекомендуется напрямую модифицировать внутреннюю очередь Noty.queue, если есть возможность использовать стандартные методы close() и closeAll(). Это снижает риск непредсказуемого поведения при будущих обновлениях библиотеки.

Очистка очереди в Noty позволяет поддерживать интерфейс в чистоте, управлять временем и порядком отображения уведомлений, а также предотвращать появление устаревших или ненужных сообщений, обеспечивая более гладкий и управляемый пользовательский опыт.