Tengo un elemento DOM btn y tengo una función con setTimeout que escucha en este elemento. Quiero eliminar mi oyente mientras se ejecuta la función para evitar múltiples llamadas de setTimeout y la superposición de tiempo, pero esto en mi función de devolución de llamada es una ventana. Intenté usar bind pero no funciona
const checkTable = () => { this.removeEventListener('click', checkTable); console.log(this); // i get "window" setTimeout(() => { //some code }, 3000); }; const app = () => { const checkBtn = document.querySelector('.check-btn'); checkBtn.addEventListener('click', checkTable.bind(checlBtn)) }; app();y el mismo resultado con el evento onclick
No puede llamar a .bind() en una función de flecha . Las funciones de flecha se usan para usar automáticamente this valor desde donde se define. Para que esto funcione, su checkTable debe ser una función "normal".
function checkTable() { this.removeEventListener('click', checkTable); console.log(this); // i get "window" setTimeout(() => { //some code }, 3000); }