⊗jsSpACInr 155 of 294 menu

Asynchroner Code mit Callbacks in JavaScript

Nehmen wir an, wir haben eine asynchrone Funktion:

function make() { setTimeout(function() { console.log('1'); }, 3000); }

Nehmen wir an, wir verwenden diese Funktion wie folgt:

make(); console.log('2'); // wird zuerst ausgeführt

Nehmen wir an, wir möchten erreichen, dass die zweite Ausgabe in die Konsole erst ausgeführt wird, nachdem der asynchrone Vorgang innerhalb der Funktion abgeschlossen ist. Einer der Ansätze, die dafür verwendet werden, ist die Verwendung von Callbacks: Wir wickeln den zu erwartenden Code in eine anonyme Funktion und übergeben sie als Parameter an die Funktion make:

make(function() { console.log('2'); });

Allein dadurch wird unsere Aufgabe natürlich nicht gelöst. Bislang haben wir nur die folgende Vereinbarung getroffen: Wenn Sie Code nach dem Auslösen von make ausführen möchten, übergeben Sie diesen Code als Callback im Aufruf von make.

Korrigieren wir den Code der Funktion make so, dass sie beginnt, gemäß unserer Vereinbarung zu funktionieren:

function make(callback) { setTimeout(function() { console.log('1'); // irgendein asynchroner Vorgang, vielleicht nicht nur einer callback(); // dann unser Callback }, 3000); }

Erklären Sie, in welcher Reihenfolge die Zahlen in der Konsole ausgegeben werden:

function make(callback) { setTimeout(function() { console.log('1'); callback(); }, 3000); } make(function() { console.log('2'); console.log('3'); });
hufrdaencs