Tengo una función que ejecuta el reconocimiento de voz cuando hago clic en el botón de start , cuando el reconocimiento de voz finaliza, se deben iniciar algunas acciones. Yo uso addEventListener('audioend', ()=>...) para rastrear el evento. Todo funciona como se esperaba, pero ahora estoy agregando otra funcionalidad para dejar de escuchar cuando hago clic en el mismo botón y la función también debería completarse. Pero enfrenté un problema con addEventListener que se ejecuta a pesar de la palabra clave de return .
const recognition = new SpeechRecognition.getRecognition() const [isPlaying, setIsPlaying] = useState(false) function playSong() { setIsPlaying(!isPlaying) //when I click 'Play' button again it changes to 'Stop' if (listening) { //verify if speech recognition listening SpeechRecognition.stopListening() console.log('Should stop here') return //I try to use return but it doesn't help, in any case addEventListener runs next }else if { recognition.addEventListener('audioend', () => { console.log('Some other actions') } ........ }En lugar de regresar, debe eliminar el detector de eventos
const dosomeaction = () => { console.log("do some action") }; recognition.addEventListener('audioend', dosomeaction)De esta manera agregas el listiner de eventos para que puedas eliminarlo de esta manera.
recognition.removeEventListener('audioend', dosomeaction)