Tengo dos oyentes de eventos y ambos se disparan en la carga de la página según el estado del video. Pero si ambos están despedidos, quiero que el primero deje de funcionar. ¿Cómo es eso posible?
obj.addEventListener('suspend', () => { // when only this is fired -> run this code // my code }); obj.addEventListener('play', () => { // when this is fired too -> run this code and deactivate the first code // my code });Debe definir una variable global y verificar si es verdadera, para no activar la primera función. Pero puede haber algunos problemas de tiempo de ejecución, si entre la ejecución del primer evento, el segundo evento llamado, el primer evento no se congela y continúa ejecutándose.
let shouldRun = true; obj.addEventListener('suspend', () => { // when only this is fired -> run this code if(!shouldRun){ return; } // my code }); obj.addEventListener('play', () => { // when this is fired too -> run this code and deactivate the first code shouldRun = false; // my code });Supongo que puedes intentar usar obj.removeEventListener('suspend') en el evento Call of 'play'.
Para obtener más información sobre removeEventListener, puede acceder al enlace oficial. https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener
Una forma sencilla de resolver esto es eliminar el controlador de eventos con removeEventListener() .
function handleSuspend() { // when only this is fired -> run this code // my code } function handlePlay() { // when this is fired too -> run this code and deactivate the first code obj.removeEventListener('suspend', handleSuspend); // my code } obj.addEventListener('suspend', handleSuspend); obj.addEventListener('play', handlePlay);