HOLA!!!
Necesitaria saber como lograr hacer un checkeo constante sin detener la ejecucion de funciones asincronas.
$$.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!!!
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!!!
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:
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:
(https://i.ibb.co/jh4Q8N8/holaaa.png)
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!!!