JavaScript-Rückrufe: Asynchron oder nicht?
JavaScript-Rückrufe sind nicht universell asynchron. In bestimmten Szenarios, wie dem Beispiel, das Sie mit den Funktionen addOne und simpleMap bereitgestellt haben, wird der Code synchron ausgeführt.
Asynchrones JavaScript im Browser
Callback-basierte AJAX-Funktionen in jQuery sind oft asynchron, da sie XHR-Anfragen (XMLHttpRequest) beinhalten. Standardmäßig sind XHR-Anfragen in Browsern asynchron und ermöglichen eine fortlaufende Skriptausführung, während die Anfrage verarbeitet wird.
Asynchrones JavaScript in Node.js
In Node.js Asynchrones Verhalten entsteht im Allgemeinen durch Eingabe-/Ausgabeoperationen (E/A), wie z. B. Datei-E/A, process.nextTick, setTimeout und setInterval. Rückrufbasierte Datenbankaufrufe mit MongoDB/Mongoose sind aufgrund der zugrunde liegenden E/A-Vorgänge, die an der Interaktion mit der Datenbank beteiligt sind, asynchron.
Vorbestimmte asynchrone Situationen
Asynchronität kommt häufig vor in der Umwelt verankert. Im Browser sind mit XHR-Anfragen verknüpfte Rückruffunktionen von Natur aus asynchron. In Node.js sind mit E/A-Vorgängen verknüpfte Rückrufe ebenfalls asynchron.
Benutzerdefinierte asynchrone Funktionen
Ohne sich ausschließlich auf bestimmte Umgebungsfunktionen zu verlassen, können Sie asynchrones Verhalten erreichen durch die Nutzung der ES6-Versprechen. Versprechen bieten einen Mechanismus auf Sprachebene zum Definieren asynchroner Vorgänge. Die an Versprechen angehängten Rückruffunktionen (über then und Catch) werden immer asynchron ausgeführt, um sicherzustellen, dass der Code, der dem Versprechen folgt, nicht blockiert.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3