Как выполнить функцию, если в течении 3 сек. не было действий?

Требуется: при клике на поле, если в течении 3 сек больше не кликали, вывести сообщение, но если кликнули еще раз, то отменить вывод и выводить сообщение через 3 сек, относительно последнего клика.

Код, который не работает:

document.getElementById('ajax_send_li').addEventListener('click', ()=> {

    clearTimeout(timer_li);
    
    var timer_li = setTimeout(()=> {
        alert('Последний клик был 3 сек назад');
    }, 1000);

});

Желательно на чистом JS


Ответы (1 шт):

Автор решения: Yaant

Код почти работает, достаточно вынести объявление переменной во внешний скоуп:

var timer_li;
document.getElementById('ajax_send_li').addEventListener('click', ()=> {

    clearTimeout(timer_li);
    
    timer_li = setTimeout(()=> {
        console.log('Последний клик был 3 сек назад');
    }, 3000);
});
<input id="ajax_send_li" type="button" value="click me">

→ Ссылка