Promises

Promises

Mittel

Einführung

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.

Anleitung

Die beiden Ziele dieser Übung sind:

  1. Implementiere eine 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) => {});
  1. Implementiere die folgenden eingebauten 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.
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
JavaScript Exercism

Bereit, mit Promises zu starten?

Melde dich bei Exercism an, um JavaScript mit 37 Konzepte159 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.