set timeout to event listener function



I have an event listener

elem.addEventListener('evt', fooFn(){alert("OK")});

I would like to have a timeout for this event listener. So let’s say that if it doesn’t receive any event called ‘evt’ in 3 seconds I would like to have a notification that it timed out.

I tried with the setTimeout function but so far I don’t manage to pass an internal variable of the addEventListener callback function (fooFn) to the setTimeout one.

Any ideas on how I could make it?

Answer

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);

maybe this will work, just place the “internal variable” in the outer scope



Source: stackoverflow