En el código:
let nextInterval = function(){ if(score % 10 === 0) { speed -= 10; } if(internalScore === 20) { clearInterval(2); catchingEggs(); } if(heartIndex<0) { clearInterval(2); return } eggIndex = Math.floor(Math.random()*4); fallingEggs(allEggs[eggIndex], speed); } setInterval(function(){ if(score % 10 === 0) { speed -= 10; } if(internalScore === 20) { clearInterval(1); setInterval (nextInterval,speed*3.5); return } if(heartIndex<0) { clearInterval(1); return } eggIndex = Math.floor(Math.random()*4); fallingEggs(allEggs[eggIndex], speed); }, speed*3.5); cuando internalScore === 20 , ambos intervalos comienzan a correr juntos, simultáneamente. Uso clearInterval() para detener el intervalo con ID 1, pero cuando comienza el siguiente intervalo, el primero comienza de nuevo.
Quiero poder reutilizar el mismo código de intervalo (idealmente con diferentes variables). Intenté iniciar un nuevo intervalo fuera de la función y en un condicional, pero eso tampoco funcionó, JS simplemente revisa el código una vez, ve el condicional === falso y no llama al segundo intervalo en absoluto y si pongo eso condicional en un bucle while, bloquea el navegador.
entonces el código anterior es lo más cercano que tengo a lo que estoy tratando de hacer, pero aún no estoy del todo allí.