Bevor die Klasse Promise eingeführt wurde, gab es nur einen Weg, mit asynchronem Code umzugehen: das Callback-Muster.
Ein Callback ist eine Funktion, die als Argument an eine andere Funktion übergeben wird und aufgerufen wird, sobald eine Aktion in dieser anderen Funktion abgeschlossen ist. Ein verbreitetes Muster für solche Callback-Funktionen ist, dass sie als ersten Parameter einen „error" akzeptieren (siehe Beispiel unten).
function callback(error, arg2, arg3) {}
Wie hängt das mit asynchronem Code zusammen?
Historisch wurden Callbacks verwendet, um nach dem Abschluss einer asynchronen Aufgabe noch etwas zu erledigen, ohne das gesamte Programm zu blockieren.
fetchProduct(productId, function (error, data) {
if (error) {
// Handle the error
} else {
// Do some work
}
});
Im obigen Beispiel nimmt die Funktion fetchProduct (die asynchron ist) ein Callback als zweites Argument entgegen, das entscheidet, was zu tun ist, wenn die Produktdaten abgerufen wurden.
Die beiden Ziele dieser Übung sind:
promisify-Funktion, die eine Funktion nach dem „Callback-Muster“ in eine Funktion umwandelt, die ein Promise zurückgibt. Sieh dir das Beispiel unten an.function fetchProduct(productId, function(error, data) {
if (error) {
// Handle the error
} else {
// Make something with your data
}
})
const fetchProductAsPromise = promisify(fetchProduct);
// Now you got a function `fetchProductAsPromise`
// that returns a promise
fetchProductAsPromise(productId)
.then((data) => {})
.catch((error) => {});
Promise-Methoden neu (ohne sie zu verwenden):all: nimmt ein Array von Promises entgegen und wird aufgelöst, wenn alle von ihnen aufgelöst sind, oder abgelehnt, wenn eines von ihnen abgelehnt wird.allSettled: nimmt ein Array von Promises entgegen und wird aufgelöst, wenn alle von ihnen entweder aufgelöst oder abgelehnt werden.race: nimmt ein Array von Promises entgegen und wird mit dem Wert des ersten Promises aufgelöst oder abgelehnt, das aufgelöst oder abgelehnt wird.any: nimmt ein Array von Promises entgegen und wird aufgelöst, wenn eines von ihnen aufgelöst wird, oder abgelehnt, wenn alle von ihnen abgelehnt werden.Melde dich bei Exercism an, um JavaScript mit 37 Konzepte159 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.