Estoy tratando de hacer un reproductor aleatorio de MP3. Ya he hecho todos los arreglos y ciclos, pero lo que me cuesta es que todas las canciones se reproduzcan al mismo tiempo, básicamente algo así:
var num; var x = 0; let music = ['https://samplelib.com/lib/previeww/mp3'sample-3s.mp3', 'https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3']; funcion button(){ for (let i = 0; i < 4; i++){ num = Math.floor(Math.random()*3);console.log(num);} music.play(num)} music[num].addEventListener('finalizado', console.log("placeholder")});
Lo que pasa, como ya dije antes, el ciclo no espera a que termine el sonido, vuelve una y otra vez hasta que la página se bloquea. ¿Hay alguna forma de hacerlo esperar antes de que suene de nuevo?
Vas a necesitar proporcionar más contexto para que podamos darte una respuesta realmente buena.
Supongo que cualquier función que esté llamando en el ciclo for está sucediendo de forma asíncrona. Básicamente, su ciclo for puede estar presionando el botón de inicio 4 veces seguidas sin esperar a que suceda el final.
Si observa la documentación de su objeto/función de reproductor de mp3 que está llamando en el ciclo for, es posible que pueda identificar una función que verifique cuándo finaliza la canción y luego espere eso antes de llamar a la próxima iteración del en bucle