/ / Solicitud de jquery ajax múltiple: formas de manejarlo - javascript, jquery, ajax

Múltiples solicitudes jquery ajax - formas de manejarlo - javascript, jquery, ajax

Si se está cargando jquery ajax y disparo otro ajax haciendo clic rápidamente en el botón, se atasca. ¿Cómo puedo manejar múltiples solicitudes disparadas juntas?

¿Cómo hago después? 1) Descarte / anule todas las solicitudes anteriores y solo procese la última. 2. No permita una nueva solicitud hasta que se complete la anterior (variación: puede ser la misma solicitud ajax o cualquier nueva solicitud ajax de la página).

Respuestas

0 para la respuesta № 1

AJAX es asíncrono. Entonces puedes despedirlos al mismo tiempo.

O en la devolución de llamada exitosa (o devolución de llamada .done ()), puede llamar una solicitud tras otra. Por lo tanto, será fácil administrar su problema (haga clic en el botón pero quedará atrapado), porque puede controlarlo.

$.ajax({
url: "http://..."
})
.done(function( data ) {
// Other AJAX call
// or restore disabled elements
// while you were receiving the response.
});

Si quieres una solución, solo dímelo.


0 para la respuesta № 2

puedes usar ajax "beforeSend" para bloquear el actualrequest.Así ese usuario puede enviar una nueva solicitud solo si la anterior está terminada. En cuanto a la secuencia del proceso, puede usar un valor global para almacenar datos y siempre asignarlo con el nuevo valor de respuesta.

   function request(callback){
if(!$btn.hasClass("disabled")){
$.ajax({
type:"...",
url:"...",
beforeSend:function(){
$btn.addClass("disabled");//so that user cannot send a new request
},
success:function(data){
window.g_data = data;
callback && callback()//success callback
$btn.removeClass("disabled");
}
})
}


}
function callback(){

//process window.g_data
}

0 para la respuesta № 3

Echa un vistazo a esta biblioteca:

Async es un módulo de utilidad que proporciona funciones directas y potentes para trabajar con JavaScript asíncrono.

Asíncrono