L'asynchrone permet des échanges de données sans bloquer le programme.
Dans un programme, si tu as 2 requêtes à faire:
faire tâche A
faire requete SQL B
faire requête SQL C
faire tâche D
En mode synchrone, quand tu lance la requête B, ça bloque ton programme. Il faut attendre que la requête B soit terminée pour pouvoir passer à la requête C.
En mode asynchrone:
faire tâche A
faire requete SQL B
faire requête SQL C
Attendre la fin de B et C.
faire tâche D
En mode asynchrone, tu lancer la requête B, mais ça rend immédiatement la main à ton programme qui continue à s'exécuter, même si la requête B n'est pas terminée.
Du coup, ça lance aussi immédiatement la requête C.
Les requêtes B et C sont lancées en même temps.
Ensuite, "Attendre la fin de B et C" bloque le programme en attendant patiemment les résultats des 2 requêtes B et C.