¿Qué es una solicitud AJAX oculta?
He notado un aumento en el uso de solicitudes ocultas de AJAX diseñadas para hacer que la acción de un usuario parezca ocurrir inmediatamente. Me referiré a este tipo de solicitud AJAX como no bloqueante. Es una solicitud de AJAX realizada sin que el usuario se dé cuenta de que está sucediendo, se realiza en segundo plano y su operación es silenciosa ( no hay información detallada para indicar una finalización exitosa de la llamada de AJAX ). El objetivo es hacer que la operación parezca que ha ocurrido inmediatamente cuando realmente no ha terminado.
Aquí hay ejemplos de solicitudes AJAX sin bloqueo;
- El usuario hace clic en eliminar en una colección de correos electrónicos. Los elementos desaparecen inmediatamente de su bandeja de entrada y pueden continuar con otras operaciones. Mientras tanto, una solicitud AJAX está procesando la eliminación de los elementos en segundo plano.
- El usuario completa un formulario para nuevos registros. Clics guardar. El nuevo elemento aparece en la lista inmediatamente. El usuario puede continuar agregando nuevos registros.
Para aclarar, aquí hay ejemplos de bloqueo de solicitudes AJAX;
- El usuario hace clic en eliminar en una colección de correos electrónicos. Aparece un cursor de reloj de arena. Se realiza la solicitud AJAX y, cuando responde, el cursor del reloj de arena se apaga. El usuario tiene que esperar un segundo para que se complete la operación.
- El usuario completa un formulario para nuevos registros. Clics guardar. El formulario se vuelve gris con una animación de cargador AJAX. Se muestra un mensaje "Sus datos se guardaron" y el nuevo registro aparece en la lista.
La diferencia entre los dos escenarios anteriores es que una configuración de AJAX sin bloqueo no proporciona información sobre el desempeño de una operación, y una configuración de AJAX de bloqueo sí.
El riesgo de solicitudes AJAX ocultas
El mayor riesgo de este estilo de solicitud AJAX es que la aplicación web podría estar en un estado completamente diferente cuando la solicitud AJAX falla.
Por ejemplo, un ejemplo sin bloqueo;
- El usuario selecciona un montón de correos electrónicos. Haga clic en el botón Eliminar. La operación parece ocurrir inmediatamente (los elementos simplemente desaparecen de la lista). Luego, el usuario hace clic en el botón redactar y comienza a escribir un nuevo correo electrónico. Es en este momento que el código JavaScript descubre que la solicitud AJAX ha fallado. El script podría mostrar un mensaje de error, pero realmente no tiene sentido en este momento.
Alternativamente, un ejemplo de bloqueo;
- El usuario selecciona un montón de correos electrónicos. Haga clic en el botón Eliminar. Ve un reloj de arena, pero la operación falla. Reciben un mensaje de error que dice "error. Bla bla bla". Se devuelven a la lista de correos electrónicos y aún tienen seleccionados los correos electrónicos que querían eliminar. Podrían intentar eliminarlos nuevamente.
También existen otros riesgos técnicos al realizar solicitudes AJAX sin bloqueo. El usuario podría cerrar el navegador, podría navegar a otro sitio web y podría navegar a otra ubicación en la web actual que haga que el contexto de cualquier respuesta de error no tenga sentido.
Entonces, ¿por qué se está volviendo tan popular?
Facebook, Google, Microsoft, etc., etc., todos estos grandes dominios utilizan cada vez más las solicitudes AJAX sin bloqueo para hacer que las operaciones aparezcan que se realicen de manera instantánea. También he visto un aumento en los editores de formularios que tienen ningún botón para guardar o enviar . Tan pronto como salga de un campo o presione enter. El valor se guarda. No hay ningún mensaje de tu perfil se ha actualizado o el paso de guardado.
Las solicitudes de AJAX no son una certeza, y no deberían ser tratadas como exitosas hasta que se hayan completado, pero muchas de las aplicaciones web más importantes están funcionando de esa manera.
¿Estos sitios web que utilizan llamadas AJAX no bloqueantes para simular aplicaciones receptivas corren un riesgo innecesario al costo de aparecer rápidamente?
¿Es este un patrón de diseño que todos deberíamos seguir para seguir siendo competitivos?