[SOLUCIONADO] Funciones asincronas y checkeo constante de su terminacion.

Iniciado por 79137913, Enero 23, 2019, 10:28:32 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

HOLA!!!

Necesitaria saber como lograr hacer un checkeo constante sin detener la ejecucion de funciones asincronas.

Código: javascript
            $$.post(baseurl + 'AppRRPP/GetLugar', { x: "x" }, function (dataX) {
                idlugarRRPP = dataX;
            });
            $$.get(baseurl + "Encargados/HorList", {}, function (dataY) {
                ListaHorarios = dataY.split("/");
            });
            $$.get(baseurl + "Encargados/BenList", {}, function (dataZ) {
                ListaBeneficios = dataZ.split("/");
            });
            $$.get(baseurl + "Encargados/EntList", {}, function (dataO) {
                ListaEntradas = dataO.split("/");
            });
            $$.post(baseurl + 'AppRRPP/GetLimit', { x: "x" }, function (dataP) {
                ListaLimit = dataP;
                LimitE = ListaLimit.split("||")[0].split("/");
                LimitB = ListaLimit.split("||")[1].split("/");
            });

//este codigo de aqui abajo debo ejecutarlo cada segundo
            if ((idlugarRRPP == 0 || ListaHorarios[0] != "null" || ListaBeneficios[0] != "null" || ListaEntradas[0] != "null" || ListaLimit.length < 2)==false) {
               //cuando se entra aqui todas las funciones asincronas han terminado de ejecutarse
               //ejecutar codigo de timeout
            }


//el codigo de aqui abajo cuando hayan pasado 15 segundos o si el codigo de arriba dio true
            if (idlugarRRPP == 0 || ListaHorarios[0] != "null" || ListaBeneficios[0] != "null" || ListaEntradas[0] != "null" || ListaLimit.length < 2) {
                mainView.router.back();
                myApp.alert("Su sesion expiro - Verifique conexion a internet", '---');
            } else { mainView.router.loadPage(data + ".html");}



GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Usa los callback de las llamadas para saber cuando estan acabadas no?

Sent from my SM-G960F using Tapatalk


HOLA!!!

Los callbacks son los que setean las variables, fijate que cada llamada post o get tiene una funcion dentro esa es el callback de success.

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hola 79137913, podrías explicarnos cual es el problema al utilizar un timmer?

Hola,

Una opcion seria combinar las llamadas HTTP asicronicas con Promises. Hacer las llamadas asicronicas en paralelos y luego esperar que estas terminen su ejecucion. Ejemplo:

Código: javascript
async function saludo() {

//1) Ejecuto los 3 request en paralelo
request1 =  Promise.resolve($.get("https://jsonplaceholder.typicode.com/todos/1"));
request2 =  Promise.resolve($.get("https://jsonplaceholder.typicode.com/todos/2"));
request3 =  Promise.resolve($.get("https://jsonplaceholder.typicode.com/todos/3"));

//2) Espero que los 3 request se completen
const results = [await request1, await request2, await request3];

//3) Despues de este punto, puedo utilizar los valores de los request
request1.then(function(value) {
  console.log(value);
});
request2.then(function(value) {
  console.log(value);
});
request3.then(function(value) {
  console.log(value);
});
}

console.log(saludo());


Resultado:

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

HOLA!!!

Genial gracias chicos, en este momento he solucionado el problema haciendo un timeout a 15 segundos y poniendo un clear timeout en cada success solo si todas las variables estan cargadas, de esta forma, la ultima variable cargada cancela el timeout y termina el proceso.

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta