it-swarm-es.com

¿Cuál es la diferencia entre async: false y async: true en jquery ajax?

En jquery ajax hay un parámetro

$.ajax({async: true, ...});

¿Cuál es la diferencia entre establecer el valor en true y false?

38
Brutal_JL

Establece asíncrono en falso , cuando necesita que la solicitud ajax sea completado antes de que el navegador pase a otros códigos:

_<script>
    // ...
    $.ajax(... async: false ...); // Hey browser! first complete this request, 
                                  // then go for other codes

    $.ajax(...); // Executed after the completion of the previous async:false request.
</script>
_

By default, the_ $. AJAX _request in jQuery is set to asynchronous. El nombre de la variable es asíncrono y el valor se establece en verdadero. Esto también me dio un poco de confusión cuando me enteré por primera vez, así que vamos a repasarlo.

Sincrónico (asíncrono: falso) - La secuencia de comandos se detiene y espera a que el servidor envíe una respuesta antes de continuar. Hay algunas situaciones en las que Synchronous Ajax es obligatorio.

En las aplicaciones web estándar, la interacción entre el cliente y el servidor es sincrónica. Esto significa que uno tiene que suceder después del otro. Si un cliente hace clic en un enlace, la solicitud se envía al servidor, que luego devuelve los resultados.

Debido al peligro de que una solicitud se pierda y cuelgue el navegador, no se recomienda JavaScript síncrono para nada fuera de los controladores de eventos de descarga (antes), pero si necesita recibir una respuesta del servidor antes de permitir que el usuario navegue lejos desde la página, Javascript sincrónico no es solo su mejor opción.

_$.ajax({
         url: "file.php",
         type: "POST",
         async: false,
         success: function(data) {
                // .....
         }
      });
_

Asíncrono (asíncrono: verdadero) - Donde el script permite que la página continúe siendo procesada y se encargará de la respuesta cuando llegue. Si algo sale mal en la solicitud y/o transferencia del archivo, su programa aún tiene la capacidad de reconocer el problema y recuperarse de él. El procesamiento asincrónicamente evita el retraso mientras se realiza la recuperación del servidor porque su visitante puede continuar interactuando con la página web y la información solicitada se procesará con la respuesta actualizando la página cuando llegue.

_$.ajax({
         url: "file.php",
         type: "POST",
         async: true,
         success: function(data) {
                    // .....
         }
       });
_

También mira este artículo

Asíncrono y Sincrónico AJAX llamadas

73
Nidhish Krishnan

Establecerlo en false bloquea el hilo principal (responsable de ejecutar JavaScript, renderizar la pantalla, etc.) y espera a que se complete el XHR.

Esta es casi siempre una idea terrible. A los usuarios no les gustan las IU que no responden.

6
alex

asíncrono (predeterminado: true)

Tipo : booleano

Por defecto, todas las solicitudes se envían de forma asíncrona (es decir, esto se establece en true por defecto). Si necesita solicitudes sincrónicas, configure esta opción en false. Las solicitudes de dominio cruzado y las solicitudes dataType: "jsonp" no admiten la operación síncrona. Tenga en cuenta que las solicitudes sincrónicas pueden bloquear temporalmente el navegador, deshabilitando cualquier acción mientras la solicitud está activa. A partir de jQuery 1.8 , el uso de async: false con jqXHR ($.Deferred) está en desuso; debe usar las opciones de devolución de llamada exitosa/error/completa en lugar de los métodos correspondientes del objeto jqXHR como jqXHR.done().

Aquí está el Fuente .

1
Sabir Al Fateh