Есть класс Notify который рендерит уведомления, показывает их и скрывает через некоторое время. У него есть методы open() и close(). Метод open() вызывается при создании экземпляра класса, а close() внутри open() по setTimeout`у через 3 секунды. Если уведомление одно – все работает как надо, но если их 2 и больше – уведомления рендерятся все (они все есть в дом-дереве), но из-за setTimeout`ов (предположительно), открывается и закрывается только последнее. Если сделать console.log() в методе, то он вызывается столько раз, сколько уведомлений рендерится, т.е. вызывается он точно. Что я делаю не так?
https://jsfiddle.net/suchrile/xph9bw65/4/
open(type) {
if (type === 'modal') {
this.$body.querySelector('.modal').classList.add('open')
} else {
this.$el.classList.add('open')
setTimeout(() => this.close(type), 3000)
}
}
close(type) {
if (type === 'modal') {
this.$el.querySelector('.modal').classList.remove('open')
document.querySelector('body').classList.remove('no-scroll')
} else {
this.$el.classList.remove('open')
}
}
const modal2 = new Modal('notify1', {
type: 'notify',
notifyStatus: 'success',
title: 'Задача создана!'
})
const modal3 = new Modal('notify2', {
type: 'notify',
notifyStatus: 'danger',
title: 'Задача удалена!'
})