web-dev-qa-db-fra.com

Quelle est la différence entre async: false et async: true dans jquery ajax?

Dans jquery ajax il y a un paramètre 

$.ajax({async: true, ...});

Quelle est la différence entre définir la valeur sur true et false?

37
Brutal_JL

Vous définissez async sur false lorsque vous souhaitez que cette demande ajax soit complétée avant que le navigateur ne passe à d'autres codes:

<script>
    // ...
    $.ajax(... async: false ...); // Hey browser! first complete this request, 
                                  // then go for other codes

    $.ajax(...); // Executed after the completion of the previous async:false request.
</script>

By default, the $. AJAXrequest in jQuery is set to asynchronous. Le nom de la variable est asynchrone et la valeur est définie sur true. Cela m’a aussi apporté un peu de confusion lors de la première lecture, revenons-en.

Synchronous (async: false) - Le script s'arrête et attend que le serveur renvoie une réponse avant de continuer. Il existe certaines situations dans lesquelles Ajax synchrone est obligatoire.

Dans les applications Web standard, l'interaction entre le client et le serveur est synchrone. Cela signifie que l'un doit se passer après l'autre. Si un client clique sur un lien, la demande est envoyée au serveur, qui renvoie ensuite les résultats.

En raison du risque de perdre une requête et de suspendre le navigateur, le javascript synchrone n'est pas recommandé en dehors des gestionnaires d'événements onload (unforfore), mais si vous devez avoir une réponse du serveur avant de permettre à l'utilisateur de naviguer synchrone Javascript n'est pas seulement votre meilleure option.

$.ajax({
         url: "file.php",
         type: "POST",
         async: false,
         success: function(data) {
                // .....
         }
      });

Asynchrone (async: true) - Où le script permet de continuer à traiter la page et gérera la réponse si et quand elle arrivera. Si quelque chose ne va pas dans la demande et/ou le transfert du fichier, votre programme a toujours la capacité de reconnaître le problème et de le résoudre .. Le traitement asynchrone évite le délai pendant lequel la récupération du serveur a lieu car votre visiteur peut continuer à interagir avec la page Web et les informations demandées seront traitées avec la réponse mettant à jour la page au fur et à mesure de son arrivée.

$.ajax({
         url: "file.php",
         type: "POST",
         async: true,
         success: function(data) {
                    // .....
         }
       });

Regardez aussi cet article

Appels asynchrones et synchrones AJAX

71
Nidhish Krishnan

Le réglage sur false bloque le thread principal (responsable de l'exécution de JavaScript, du rendu de l'écran, etc.) et attend la fin du XHR.

C'est presque toujours une idée terrible. Les utilisateurs n'aiment pas les interfaces utilisateur qui ne répondent pas.

6
alex

async (par défaut: true)

Type: Booléen

Par défaut, toutes les demandes sont envoyées de manière asynchrone (c’est-à-dire que true est défini par défaut). Si vous avez besoin de requêtes synchrones, définissez cette option sur false. Les requêtes interdomaines et les requêtes dataType: "jsonp" ne prennent pas en charge les opérations synchrones. Notez que les requêtes synchrones peuvent verrouiller temporairement le navigateur, désactivant ainsi les actions tant que la requête est active. A partir de jQuery 1.8, l'utilisation de async: false avec jqXHR ($.Deferred) est obsolète; vous devez utiliser les options de rappel success/error/complete au lieu des méthodes correspondantes de l'objet jqXHR telles que jqXHR.done().

Voici la Source .

0
Sabir Al Fateh