La programación asincrónica es un poco más complicada porque la consecuencia de realizar una solicitud se encapsula en una función en lugar de seguir la declaración de solicitud. Pero el comportamiento en tiempo real que experimenta el usuario puede ser significativamente mejor porque no verá un servidor lento o una red inactiva que haga que el navegador actúe como si se hubiera bloqueado. La programación sincrónica es una falta de respeto
y no debe emplearse en aplicaciones que son utilizadas por personas.
Douglas Crockford ( Blog de YUI )
Muy bien, abroche sus asientos, porque va a ser un viaje lleno de baches. Cada vez más personas preguntan sobre la carga de scripts dinámicamente a través de javascript, parece ser un tema candente.
Las principales razones por las que esto se hizo tan popular son:
- modularidad del lado del cliente
- gestión de la dependencia más sencilla
- manejo de errores
- ventajas de rendimiento
Acerca de la modularidad : es obvio que la gestión de las dependencias del lado del cliente debe manejarse directamente en el lado del cliente. Si se necesita cierto objeto, módulo o biblioteca, simplemente lo solicitamos y lo cargamos dinámicamente.
Manejo de errores : si un recurso falla, todavía tenemos la oportunidad de bloquear solo las partes que dependen del script afectado, o incluso intentarlo de nuevo con cierta demora.
El rendimiento se ha convertido en una ventaja competitiva entre los sitios web, ahora es un factor de clasificación de búsqueda. Lo que pueden hacer los scripts dinámicos es imitar el comportamiento asincrónico en contraposición a la forma de bloqueo predeterminada de cómo los navegadores manejan los scripts. Los scripts bloquean otros recursos, los scripts bloquean el análisis posterior del documento HTML, los scripts bloquean la interfaz de usuario. Ahora, con las etiquetas de secuencia de comandos dinámicas y sus alternativas entre navegadores, puede realizar solicitudes asincrónicas reales y ejecutar código dependiente solo cuando estén disponibles. Sus scripts se cargarán en paralelo incluso con otros recursos y el renderizado será impecable.
La razón por la que algunas personas se apegan a las secuencias de comandos sincrónicas es porque están acostumbradas. Creen que es la forma predeterminada, es la forma más fácil y algunos incluso pueden pensar que es la única forma.
Pero lo único que debería preocuparnos cuando se deba decidir sobre el diseño de una aplicación es la experiencia del usuario final . Y en esta área lo asincrónico no tiene rival. El usuario obtiene respuestas inmediatas (o dice promesas), y una promesa siempre es mejor que nada. Una pantalla en blanco asusta a la gente. Los desarrolladores no deberían ser perezosos para mejorar el rendimiento percibido .
Y finalmente algunas palabras sobre el lado sucio. Qué debe hacer para que funcione en todos los navegadores:
- aprender a pensar asincrónicamente
- organiza tu código para que sea modular
- Organice su código para manejar bien los errores y casos extremos.
- mejorar progresivamente
- siempre cuida la cantidad correcta de comentarios
eval()
cada archivo en el orden dado, de lo contrario, simplemente almacene la respuesta).