Auf Anfrage werden hier Kommentare als Antwort präsentiert:
Ich bin mir nicht sicher, ob Sie die Tatsache völlig verstehen, dass Funktionen in JS erstklassige Objekte sind und daher erst nach ihrer Erstellung gespeichert werden können, wenn sie benötigt werden.
Angenommen, Sie möchten in eine Datei schreiben und anschließend eine Protokollmeldung ausdrucken. Sie rufen also die Funktion "write ()" (oder was auch immer) auf und übergeben ihr eine Funktion, die die Protokollnachricht ausgibt (dies ist die verzögerte Rückruffunktion). "write ()" speichert intern einen Verweis auf die angegebene Funktion, beginnt mit dem Schreiben in die Datei und richtet einen eigenen Rückruf ein, um zu erfahren, wann der Schreibvorgang abgeschlossen ist. Es kehrt dann zurück, bevor der Schreibvorgang abgeschlossen ist. Wenn dies der Fall ist, wird der interne Rückruf auf irgendeine Weise aufgerufen (dies ist die Aufgabe des zugrunde liegenden Frameworks - im Fall von node.js erfolgt dies mit einer Ereignisschleife), die dann Ihren Rückruf aufruft, der die Protokollnachricht druckt.
Der "zurückgestellte" Teil bedeutet einfach, dass Ihre Rückruffunktion nicht sofort aufgerufen wird. Aufrufen wird aufgeschoben , bis die entsprechende Zeit. Bei asynchronen Funktionen wie vielen in node.js wird der angegebene Rückruf im Allgemeinen aufgerufen, wenn die Operation abgeschlossen ist (oder ein Fehler auftritt).
Das meiste Zeug ist in node.js asynchron, aber im Browser mit zB jQuery ist das meiste Zeug tatsächlich synchron (außer natürlich für AJAX-Anfragen). Da erstklassige Funktionen in JavaScript so praktisch sind (insbesondere aufgrund der hervorragenden Schließungsunterstützung), werden Rückrufe auch überall im Browser verwendet, für synchrone Vorgänge werden sie jedoch nicht "zurückgestellt" (außer, wenn sie nicht sofort von aufgerufen werden) Sie, aber später durch die Funktion, die Sie aufrufen).
Die Tatsache, dass das zugrunde liegende System ereignisgesteuert ist, ist orthogonal zur Verwendung von verzögerten Rückrufen. Sie können sich eine (sehr langsame) Version von node.js vorstellen, die einen Thread für jede Operation gestartet und dann Ihren angegebenen Rückruf aufgerufen hat, als der Thread seine Arbeit beendet hat, ohne Ereignisse zu verwenden. Das ist natürlich ein schreckliches Modell, aber es zeigt meinen Standpunkt :-)
Deferred
Objekte von jQuery ? Geht es um etwas Spezielles für Node.js?