Quando utilizzare AJAX asincrono o sincrono

AJAX, che sta per JavaScript asincrono e XML, è una tecnica che consente di aggiornare le pagine Web in modo asincrono, il che significa che il browser non ha bisogno di ricaricare l'intera pagina quando sono cambiati solo pochi bit di dati sulla pagina. AJAX trasmette solo le informazioni aggiornate da e verso il server.

Le applicazioni Web standard elaborano le interazioni tra i visitatori Web e il server in modo sincrono. Ciò significa che una cosa accade dopo l'altra; il server non è multitasking. Se si fa clic su un pulsante, il messaggio viene inviato al server e la risposta viene restituita. Non è possibile interagire con altri elementi della pagina fino a quando la risposta non viene ricevuta e la pagina non viene aggiornata. 

Ovviamente, questo tipo di ritardo può influire negativamente sull'esperienza di un visitatore Web, quindi AJAX.

Che cos'è AJAX?

AJAX non è un linguaggio di programmazione, ma una tecnica che incorpora uno script lato client (ovvero uno script che viene eseguito nel browser di un utente) che comunica con un server Web. Inoltre, il suo nome è in qualche modo fuorviante: mentre un'applicazione AJAX potrebbe utilizzare XML per inviare dati, potrebbe anche utilizzare solo testo normale o testo JSON. Ma in genere utilizza un oggetto XMLHttpRequest nel browser per richiedere dati dal server e JavaScript per visualizzare i dati.

AJAX: sincrono o asincrono

AJAX può accedere al server sia in modo sincrono che asincrono:

  • sincrono, in cui lo script si interrompe e attende che il server rispedisca una risposta prima di continuare.
  • in modo asincrono, in cui lo script consente alla pagina di continuare a essere elaborata e gestisce la risposta se e quando arriva.

Elaborazione della richiesta sincrono è simile al ricaricare la pagina, ma vengono scaricate solo le informazioni richieste anziché l'intera pagina. Pertanto, l'utilizzo di AJAX in modo sincrono è più veloce del non utilizzarlo affatto, ma richiede comunque che il visitatore attenda che si verifichi il download prima che possa continuare qualsiasi ulteriore interazione con la pagina. Le persone sanno che a volte hanno bisogno di attendere il caricamento di una pagina, ma la maggior parte delle persone non sono abituate a ritardi significativi e continui dopo essere su un sito. 

Elaborazione della richiesta in modo asincrono evita il ritardo durante il recupero dal server poiché il visitatore può continuare a interagire con la pagina Web; le informazioni richieste verranno elaborate in background e la risposta aggiornerà la pagina come e quando arriva. Inoltre, anche se una risposta è ritardata, ad esempio nel caso di dati molto grandi, i visitatori del sito potrebbero non rendersene conto perché occupati altrove nella pagina.

Pertanto, il modo preferito di utilizzare AJAX è utilizzare chiamate asincrone ove possibile. Questa è l'impostazione predefinita in AJAX. 

Perché usare AJAX sincrono?

Se le chiamate asincrone offrono un'esperienza utente così migliorata, perché AJAX offre un modo per effettuare chiamate sincrone??

Mentre le chiamate asincrone sono la scelta migliore per la maggior parte delle volte, ci sono rare situazioni in cui non ha senso consentire al visitatore di continuare a interagire con la pagina Web fino al completamento di un determinato processo lato server.

In molti di questi casi, potrebbe essere meglio non utilizzare AJAX e ricaricare l'intera pagina. L'opzione sincrona in AJAX è disponibile per il piccolo numero di situazioni in cui non è possibile utilizzare una chiamata asincrona ma non è necessario ricaricare l'intera pagina. Ad esempio, potrebbe essere necessario gestire alcune elaborazioni delle transazioni in cui l'ordine è importante. Si consideri un caso in cui una pagina Web deve restituire una pagina di conferma dopo che l'utente ha fatto clic su qualcosa. Questa attività richiede la sincronizzazione delle richieste.