¡Hola chic@s!
Estoy teniendo algunos problemillas usando promesas, y no consigo realizarlo correctamente, os voy a dejar a continuación el código original que he hecho funcionar sin problema y si alguien pudiera ayudarme a como realizarlo con promesas se lo agradecería muchísimo.
En un resumen, el código trata de hacer una serie de repeticiones de ejercicios físicos.
De ahí la idea de los timeout para cambiar entre cuando apretar y cuando descansar, y además otro para las repeticiones a realizar del ejercicio.
Os dejo el código normal aquí.
function empezar(){
preparate($('#instructions'));
var ejercicio = new Object();
ejercicio.codigo = "codigo";
ejercicio.tiempo_preparacion = 3;
ejercicio.repeticiones = 10;
ejercicio.tiempo_total = 6;
ejercicio.pasos =
{
0: "contraer",
2: "descansar",
6: "finalizar"
};
setTimeout(function(){
contar_tiempo();
console.log("TOTAL DE UN EJERCICIO: " + ejercicio.tiempo_total);
var series_realizadas = 0;
// Hacer la primera vez
series_realizadas++;
console.log("EMPEZANDO SERIE: " + series_realizadas);
hacer_una_vez(ejercicio);
console.log("ACABANDO SERIE: " + series_realizadas);
// Empezar con el bucle
var internal_interval_series = setInterval(function(){
if(series_realizadas === ejercicio.repeticiones){
console.log("ACABANDO EJERCICIO");
setTimeout(acabar(), 2000);
clearInterval(internal_interval_series);
clearInterval(interval_tiempo);
}else{
series_realizadas++;
console.log("EMPEZANDO SERIE: " + series_realizadas);
hacer_una_vez(ejercicio);
console.log("ACABANDO SERIE: " + series_realizadas);
}
}, ejercicio.tiempo_total * 1000);
interval_series = internal_interval_series;
}, ejercicio.tiempo_preparacion * 1000);
}
function hacer_una_vez(ejercicio){
var tiempo_de_ejercicio = 0;
var internal_interval_ejercicio = setInterval(function(){
if(undefined !== ejercicio.pasos[tiempo_de_ejercicio])
{
switch(ejercicio.pasos[tiempo_de_ejercicio])
{
case "preparar":
preparate($('#instructions'));
break;
case "contraer":
contraer($('#instructions'));
break;
case "descansar":
descansar($('#instructions'));
break;
case "finalizar":
clearInterval(internal_interval_ejercicio);
break;
}
}
tiempo_de_ejercicio++;
}, 1000);
interval_ejercicio = internal_interval_ejercicio;
}
Me gustaría limpiar los timeout y los interval.
¿Consejos?
Gracias