entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Cambiar código a usando promises (JAVASCRIPT)

¡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

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta