Wat doet “async: false” in jQuery.ajax()?

In het bijzonder, hoe verschilt het van de standaard ( async: true) ?

In welke omstandigheden zou ik asyncexpliciet willen instellen op false, en heeft dit iets te maken met het voorkomen dat andere gebeurtenissen op de pagina worden geactiveerd?


Antwoord 1, autoriteit 100%

Heeft het iets te maken met?
andere gebeurtenissen op de pagina voorkomen
van het vuren?

Ja.

Het instellen van async op false betekent dat de instructie die u aanroept moet worden voltooid voordat de volgende instructie in uw functie kan worden aangeroepen. Als u async: true instelt, begint de uitvoering van die instructie en wordt de volgende instructie aangeroepen, ongeacht of de async-instructie al is voltooid.

Zie voor meer inzicht:
jQuery ajax succes anoniem functiebereik


Antwoord 2, autoriteit 41%

  • Async:False= Code onderbroken. (Andere code wachttotdat dit klaar is.)
  • async:true= Code vervolgd. (Niets wordt onderbroken. Andere code is niet aan het wachten.)

Zo simpel als dit.


Antwoord 3, autoriteit 9%

Async:Falsehoudt de uitvoering van rustcode vast. Zodra u een reactie van ajax krijgt, wordt alleen dan de rest van de code uitgevoerd.


Antwoord 4, autoriteit 6%

Als u asynchroon ophalen uitschakelt, wordt uw script geblokkeerd totdat aan het verzoek is voldaan. Het is handig voor het uitvoeren van een reeks verzoeken in een bekende volgorde, hoewel ik vind dat asynchrone callbacks schoner zijn.


Antwoord 5, autoriteit 3%

Eén gebruiksbehuizing is om een ​​ajaxBellen te maken voordat de gebruiker het venster sluit of de pagina verlaat. Dit zou zijn als het verwijderen van enkele tijdelijke records in de database voordat de gebruiker naar een andere site kan navigeren of de browser sluit.

$(window).unload(
        function(){
            $.ajax({
            url: 'your url',
            global: false,
            type: 'POST',
            data: {},
            async: false, //blocks window close
            success: function() {}
        });
    });

Antwoord 6, Autoriteit 3%

Instellen Async naar False betekent dat de instructies na het AJAX-verzoek moeten wachten op het verzoek om te voltooien. Hieronder is één geval waar men async moet instellen op false, voor de code om goed te werken.

var phpData = (function get_php_data() {
  var php_data;
  $.ajax({
    url: "http://somesite/v1/api/get_php_data",
    async: false, 
    //very important: else php_data will be returned even before we get Json from the url
    dataType: 'json',
    success: function (json) {
      php_data = json;
    }
  });
  return php_data;
})();

Hierbovenbeeld wordt duidelijk het gebruik van async uitgelegd: valse

Door het in te stellen op FALSE, hebben we ervoor gezorgd dat zodra de gegevens worden bijgehouden van de -URL , alleen daarna Return PHP_DATA; wordt

genoemd


Antwoord 7, Autoriteit 3%

van

https://xhr.spec.whatwg.org/#synchronous-flag

Synchroon XMLHttpRequest buiten de werknemers om wordt verwijderd van het webplatform omdat dit nadelige gevolgen heeft voor de ervaring van de eindgebruiker. (Dit is een lang proces dat vele jaren in beslag neemt.) Ontwikkelaars mogen niet false doorgeven voor het async-argument wanneer de globale JavaScript-omgeving een documentomgeving is. User agents worden sterk aangeraden te waarschuwen voor dergelijk gebruik in ontwikkelaarstools en kunnen experimenteren met het genereren van een InvalidAccessError-uitzondering wanneer deze zich voordoet.
De toekomstige richting is om XMLHttpRequests alleen toe te staan in werkthreads. Het bericht is bedoeld als een waarschuwing in die zin.

Other episodes