Ich habe viel online gelesen und versucht, herauszufinden, wie man asynchronen JavaScript-Code schreibt. Eine der Techniken, die in meiner Forschung häufig zum Einsatz gekommen sind, ist die Verwendung von Rückrufen. Ich verstehe zwar, wie eine Rückruffunktion geschrieben und ausgeführt wird, bin aber verwirrt, warum Rückrufe die JavaScript-Ausführung scheinbar automatisch asynchron machen. Meine Frage lautet also: Wie bewirkt das Hinzufügen von Rückruffunktionen zu meinem JavaScript-Code, dass der Code automatisch asynchronisiert wird?
javascript
asynchronous-programming
Zach Dziura
quelle
quelle
Antworten:
Das tut es nicht. Nur einen Rückruf entgegennehmen oder einen Rückruf weiterleiten heißt nicht, dass er asynchron ist.
Beispielsweise nimmt die
.forEach
Funktion einen Rückruf entgegen, ist jedoch synchron.Der
setTimeout
nimmt auch einen Rückruf entgegen und ist asynchron.Das Verbinden mit einem asynchronen Ereignis in Javascript erfordert immer einen Rückruf. Dies bedeutet jedoch nicht, dass das Aufrufen oder Weitergeben von Funktionen immer asynchron ist.
quelle
Das Geheimnis der "Magie" ist, dass die Ereignisse, denen Sie die Rückrufe zuweisen, asynchron sind. Sie werden "unter der Haube" implementiert, um sich darum zu kümmern, was sie tun (z. B. etwas von einem Remote-Server abrufen), und zwar außerhalb der JS-Sandbox. Und sobald sie mit ihrer Arbeit fertig sind, geben sie der JS-Engine eine Nachricht, um ein Ereignis aufzurufen. Wenn die JS-Engine mit dem fertig ist, was sie gerade tut, ruft sie alle Ereignisse auf, die in der Warteschlange stehen (oder wartet auf eine neue Nachricht), und dann wird Ihr Rückruf "magisch" asynchron aufgerufen!
( HINWEIS: Dies ist ein sehr allgemeiner, konzeptioneller Überblick über das Thema, der keine Details enthält, da verschiedene JS-Engines die Dinge auf unterschiedliche Weise implementieren. Dies ist jedoch die allgemeine Vorstellung davon, wie es funktioniert.)
quelle