Событие onClosed является одним из ключевых колбэков в
библиотеке Noty, позволяя выполнять действия сразу
после того, как уведомление полностью закрыто и удалено из DOM. Это
событие особенно полезно для освобождения ресурсов, обновления
интерфейса или запуска последующих логических действий в приложении.
new Noty({
text: 'Сообщение об уведомлении',
type: 'success',
timeout: 3000,
callbacks: {
onClosed: function() {
console.log('Уведомление закрыто');
}
}
}).show();
Пояснения к синтаксису:
text — текст уведомления.type — тип уведомления (alert,
success, error, warning,
information).timeout — время жизни уведомления в миллисекундах.callbacks.onClosed — функция, вызываемая после полного
закрытия уведомления.onClosedАвтоматическое закрытие по таймеру Если
установлен timeout, уведомление автоматически исчезает
через указанное время. onClosed срабатывает после
завершения анимации закрытия.
Закрытие вручную через API Вызов методов
noty.close() или noty.closeAll() также
инициирует событие onClosed.
Закрытие через пользовательский интерфейс
Нажатие на крестик (closeWith: ['click']) запускает
закрытие уведомления и после анимации вызывает
onClosed.
const noty = new Noty({
text: 'Данные сохранены',
type: 'success',
timeout: 2500,
callbacks: {
onClosed: function() {
document.getElementById('status').textContent = 'Готово';
}
}
}).show();
В этом примере текст элемента #status обновляется только
после того, как уведомление полностью исчезает с экрана.
new Noty({
text: 'Загрузка завершена',
type: 'information',
timeout: 2000,
callbacks: {
onClosed: function() {
new Noty({
text: 'Можно начать следующий шаг',
type: 'alert',
timeout: 3000
}).show();
}
}
}).show();
Здесь второе уведомление появляется только после закрытия первого, что позволяет организовать последовательность уведомлений.
onCloseСобытие onClose срабатывает до начала анимации
закрытия, тогда как onClosed вызывается
после полного исчезновения уведомления и удаления его из
DOM. Это ключевое различие важно для работы с элементами
страницы, которые зависят от окончательного исчезновения
уведомления.
Функция onClosed может содержать асинхронный код,
включая промисы:
new Noty({
text: 'Обработка данных...',
type: 'alert',
timeout: 1500,
callbacks: {
onClosed: async function() {
await fetch('/log-close', { method: 'POST' });
console.log('Событие закрытия отправлено на сервер');
}
}
}).show();
Асинхронные операции не блокируют закрытие уведомления, но позволяют выполнять дополнительные действия сразу после его исчезновения.
onClosed можно использовать совместно с
onShow, onClose и другими колбэками:
new Noty({
text: 'Выполняется процесс',
type: 'warning',
timeout: 2000,
callbacks: {
onShow: function() { console.log('Уведомление показано'); },
onClose: function() { console.log('Начало закрытия'); },
onClosed: function() { console.log('Уведомление полностью закрыто'); }
}
}).show();
Это позволяет разделять логику по этапам жизни уведомления: показ, начало закрытия, окончательное закрытие.
onClosed, если требуется очистка DOM или
завершение анимаций.onClosed с созданием нового экземпляра Noty.onClosed должны быть
безопасны и не блокировать основной поток.onClose, если необходимо дождаться полного
исчезновения уведомления.Если нужно, могу подготовить отдельный подробный раздел с
реальными сценариями использования onClosed в
сложных веб-приложениях, где оно управляет состоянием
интерфейса, очередями уведомлений и логикой SPA.
Хочешь, чтобы я сделал этот разбор?