Метод stop()

Метод stop() в Noty используется для управления жизненным циклом уведомлений. Он позволяет программно останавливать автоматическое скрытие уведомления и предотвращает его исчезновение до явного вызова методов close() или других управляющих функций. Этот метод особенно полезен в сценариях, где требуется, чтобы уведомление оставалось видимым до завершения определённого процесса или действия пользователя.


Синтаксис

notyInstance.stop();
  • notyInstance — объект уведомления, созданный с помощью конструктора new Noty({...}).
  • Метод не принимает аргументы и возвращает текущий экземпляр уведомления, что позволяет использовать цепочку вызовов.

Принцип работы

Noty по умолчанию закрывает уведомления автоматически через интервал, заданный свойством timeout. Метод stop() прерывает этот автоматический таймер, фиксируя уведомление на экране. Важно отметить, что:

  • Если timeout не задан, уведомление изначально будет оставаться на экране до закрытия вручную. В этом случае stop() не оказывает заметного эффекта, но безопасен для вызова.
  • Если уведомление уже в процессе закрытия, вызов stop() может не предотвратить окончание анимации закрытия.

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

let notification = new Noty({
    text: 'Загрузка данных...',
    type: 'info',
    timeout: 5000, // автоматическое закрытие через 5 секунд
    progressBar: true
}).show();

// Прекращение автоматического закрытия через 2 секунды
setTimeout(() => {
    notification.stop();
}, 2000);

В данном примере уведомление изначально будет закрыто через 5 секунд. Вызов stop() через 2 секунды отменяет этот таймер, оставляя уведомление видимым до явного закрытия.


Совмещение с другими методами

Метод stop() часто используется вместе с setTimeout, close() или динамическим обновлением текста уведомления. Примеры комбинаций:

  1. Динамическое обновление уведомления после остановки таймера:
let noty = new Noty({
    text: 'Обработка...',
    type: 'info',
    timeout: 4000
}).show();

noty.stop();
noty.setText('Обработка завершена');
noty.setType('success');
  1. Прерывание автоматического закрытия с последующим ручным закрытием:
let noty = new Noty({
    text: 'Ожидание пользователя...',
    type: 'warning',
    timeout: 3000
}).show();

noty.stop();

document.querySelector('#closeButton').addEventListener('click', () => {
    noty.close();
});

В этом примере уведомление останется на экране до тех пор, пока пользователь не нажмёт кнопку.


Важные нюансы

  • Метод stop() не отменяет уже начавшуюся анимацию закрытия. Если уведомление начало скрываться, вызов stop() не сможет вернуть его на экран.
  • Для уведомлений с неограниченным временем отображения (timeout: false) метод используется преимущественно для единообразия кода при динамическом управлении жизненным циклом.
  • Метод поддерживает цепочку вызовов:
noty.stop().setText('Новый текст').show();

Практические советы

  • Использовать stop() при асинхронных операциях, чтобы уведомление оставалось видимым до завершения задачи (например, загрузка файлов, запросы к серверу).
  • Комбинировать с setText() для отображения прогресса выполнения операции.
  • Не использовать stop() без необходимости, чтобы избежать “зависших” уведомлений, которые пользователи должны закрывать вручную.

Метод stop() является ключевым инструментом для тонкой настройки поведения уведомлений в Noty, предоставляя полный контроль над их временем отображения и обеспечивая динамическое взаимодействие с пользователем.