Foros del Web » Programando para Internet » Javascript »

cola de ejecucion peticiones ajax

Estas en el tema de cola de ejecucion peticiones ajax en el foro de Javascript en Foros del Web. Hola a todos, Tengo un servicio que realiza peticiones casa segundo mediante ajax (POST) que actualizan un dato en pantalla. La actualización funciona correctamente, pero ...
  #1 (permalink)  
Antiguo 11/11/2014, 14:59
 
Fecha de Ingreso: junio-2008
Mensajes: 42
Antigüedad: 15 años, 10 meses
Puntos: 3
Exclamación cola de ejecucion peticiones ajax

Hola a todos,
Tengo un servicio que realiza peticiones casa segundo mediante ajax (POST) que actualizan un dato en pantalla. La actualización funciona correctamente, pero cada petición tarda un tiempo diferente ya que el volumen de datos a procesas cambia cada segundo, con lo si tengo varias peticiones ejecutandose a la ves (porque la anterior no ha finalizado aun, pero tengo mi funcion setInterval("miFuncion('params')", 1000); que lanza ya la otra) y esto segun como me produce visualización de datos en orden incorrecto.
Como puedo poner una condicion que debe esperar que se ejecuta la peticion anterior antes de lanzar otra? He visto muchos ejemplos, pero yo no tengo numero de peticiones solo una peticion que se ejecuta cada segundo.
Utilizo jquery version 1.9
Gracias todos por adelantado. La verdad es que me siento frustarada al no saber como resolverlo.
  #2 (permalink)  
Antiguo 11/11/2014, 15:16
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: cola de ejecucion peticiones ajax

en lugar de usar setInterval, usa setTimeout. lee esto
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 11/11/2014, 15:21
 
Fecha de Ingreso: junio-2008
Mensajes: 42
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: cola de ejecucion peticiones ajax

Woow, Muchissimas gracias! Voy a probar. Que es justo lo que necesitaba.
  #4 (permalink)  
Antiguo 12/11/2014, 06:19
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: cola de ejecucion peticiones ajax

Te sugiero que investigues acerca promesas para este tipo de tareas:
https://www.promisejs.org/
https://developer.mozilla.org/en-US/...bjects/Promise
http://davidwalsh.name/write-javascript-promises
  #5 (permalink)  
Antiguo 12/11/2014, 09:54
 
Fecha de Ingreso: junio-2008
Mensajes: 42
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: cola de ejecucion peticiones ajax

Hola de nuevo, he probado la solucion
(function loop(){
setTimeout(function(){
myFunctionHere();
loop();
}, 1000);
})();
pero no funciona, no espera finalización de la la petición Ajax y empeza la otra.
Olvide de comentar que es importante la cola en mi rutina, se debe respetar, y el objetivo es que si una petición dura mas de un segundo la siguente no se ejecuta hasta que no termina la anterior.
En pantalla se pintan segundos y se debe mostrar cuenta regresiva 6,5,4,3 y cuando no respeta el orden porque alguna petición tardo mas que otra sale ne pantalla 6,5, 3 y luego 4 (ya que la 3 finalizado antes que la cuarto aunque la cuarta se inicio despues de la 3). No se si me explico..

Lo de node.js no podemos utilziar en principio.
Voy a mirar lo de promesas! Gracias Panino5001
Gracias a todos!
Un cordial saludo, Victoria

Última edición por vkapyrina; 12/11/2014 a las 10:00
  #6 (permalink)  
Antiguo 12/11/2014, 15:37
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: cola de ejecucion peticiones ajax

el error que estás cometiendo es invocar la función. en lugar de ejecutar el código de dicha función
Cita:
(function opacidadImg(empieza, transOpacidad) {

setTimeout(function(){

var ahora = new Date().getTime();

if (transOpacidad <= 100) {

if ((ahora - empieza) < lib.tiempoFade) {

var avance = ((ahora - empieza) / lib.tiempoFade);
var opacidad = transOpacidad + ((100 - transOpacidad) * avance);
box.style.opacity = parseFloat(opacidad/100).toFixed(2);
box.style.filter = 'alpha(opacity =' + opacidad + ')';
opacidadImg(empieza, transOpacidad);

} else {

box.style.opacity = '';
box.style.filter = 'alpha(opacity ="")';
if (lib.agrupadas) {

document.querySelector('.bt-izq').style.display = 'block';
document.querySelector('.bt-der').style.display = 'block';
}

}
}

}, 1);


})(empieza, 50);
si quieres verlo en su contexto
http://www.forosdelweb.com/f179/apor...ml#post4516656
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: ajax, cola, ejecucion, funcion, jquery, peticiones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:47.