我有一个事件侦听器
elem.addEventListener('evt', fooFn(){alert("OK")});我想让这个事件侦听器超时。因此,假设它在3秒内没有收到任何名为'evt‘的事件,我希望有一个通知它超时了。
我尝试使用setTimeout函数,但到目前为止,我还没有设法将addEventListener回调函数(fooFn)的内部变量传递给setTimeout函数。
对我怎么能做到有什么想法吗?
发布于 2017-04-24 09:12:46
var evtFired = false;
setTimeout(function() {
if (!evtFired) {
// show notification that evt has not been fired
}
}, 3000);
function fooFn() {
evtFired = true;
alert('OK');
}
elem.addEventListener('evt', fooFn);也许这会有效,只需将“内部变量”放置在外部范围内即可。
发布于 2017-04-24 09:19:17
尝试以下解决方案:
let btn = document.getElementById('btn');
let timeOut = setTimeout(() => {
btn.removeEventListener('click', handler);
alert('no event on btn');
}, 3000);
let handler = x => {
clearTimeout(timeOut);
alert('click on btn')
};
btn.addEventListener('click', handler);<button id="btn">click me within 3 sec</button>
发布于 2021-05-02 16:13:37
尝试这样做(在我看来,这是处理程序和内存消耗最少的方法):
var timeMEM = Math.trunc(Date.now()/1000)
'target'.addEventListener('event', function(){
if(data < Math.trunc(Date.now()/1000)){
// do something in one second periods
timeMEM = Math.trunc(Date.now()/1000);
}
});https://stackoverflow.com/questions/43583894
复制相似问题