隐藏通知时防止 setTimeout() 每次触发
Prevent setTimeout() from firing every time when hiding notification
我有一个简单的弹出通知组件,它应该在 4 秒后隐藏(不透明度:0)。问题是,如果我触发一个使通知出现然后在 4 秒后消失的事件,我希望保留通知。现在一切正常,但 setTimeout() 相互叠加,我只想触发最后一个 setTimeout(),我该如何实现?
所以基本上我希望我的通知保持可见,只要发出事件的按钮被点击,只有最后一次被点击,setTimeout() 应该触发。
这是我有问题的代码:
showNotification(v){
this.popupProduct = v;
this.showPopup = true;
setTimeout(()=>{
console.log(this.showPopup)
this.showPopup = false;
},4000)
},
通知的显示由存储在 Vue 数据对象中的 this.showPopup
决定。
一种方法是存储超时的id并在函数开始时清除它:
showNotification(v) {
if (this.timeoutId) {
clearTimeout(this.timeoutId)
this.timeoutId = undefined
}
this.popupProduct = v;
this.showPopup = true;
this.timeoutId = setTimeout(()=>{
console.log(this.showPopup)
this.showPopup = false;
},4000)
},
我有一个简单的弹出通知组件,它应该在 4 秒后隐藏(不透明度:0)。问题是,如果我触发一个使通知出现然后在 4 秒后消失的事件,我希望保留通知。现在一切正常,但 setTimeout() 相互叠加,我只想触发最后一个 setTimeout(),我该如何实现?
所以基本上我希望我的通知保持可见,只要发出事件的按钮被点击,只有最后一次被点击,setTimeout() 应该触发。
这是我有问题的代码:
showNotification(v){
this.popupProduct = v;
this.showPopup = true;
setTimeout(()=>{
console.log(this.showPopup)
this.showPopup = false;
},4000)
},
通知的显示由存储在 Vue 数据对象中的 this.showPopup
决定。
一种方法是存储超时的id并在函数开始时清除它:
showNotification(v) {
if (this.timeoutId) {
clearTimeout(this.timeoutId)
this.timeoutId = undefined
}
this.popupProduct = v;
this.showPopup = true;
this.timeoutId = setTimeout(()=>{
console.log(this.showPopup)
this.showPopup = false;
},4000)
},