Par exemple:

ajaxCall() {
    $.ajax({
      ...
      ...
      success: function(response) {
        event2();
      }
    });
}

Si nous avons un appel comme:

event1();
ajaxCall();
event3();

Serait-il toujours garanti que l'ordre d'exécution des événements serait event1 () puis event2 () et event3 () sans définir le drapeau asynchrone?

0
2.6.32 8 mars 2016 à 01:30

3 réponses

Meilleure réponse

AJAX est asynchrone JAX :) Voilà votre réponse.

Si vous souhaitez effectuer un appel synchrone, vous devez définir l'indicateur async: false. Mais le success rappel ne sera pas du tout appelé et vous devrez placer la ligne event2(); juste en dessous de l'appel $.ajax.

Voir également la réponse de Mike C. Les appels synchrones sont obsolètes.

3
Community 23 mai 2017 à 12:15

En général, vous avez raison si vous définissez async sur false. Cependant, AJAX synchrone a été déconseillé et jQuery a officiellement abandonné son support après la v1.8.

Je vous suggère donc d'éviter d'essayer d'utiliser des requêtes AJAX synchrones.

1
Mike Cluck 7 mars 2016 à 22:33

Non.

La fonction de rappel se déclenche lorsque l'événement qui la déclenche (c'est-à-dire la réponse HTTP) se produit.

Une fonction que vous appelez immédiatement après avoir assigné le rappel sera toujours appelée immédiatement .

L'ordre d'exécution sera toujours:

event1();
ajaxCall();
    $.ajax();
event3();
success();
    event2();
0
Quentin 7 mars 2016 à 22:44