Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Synchronisieren, asynchronisieren und versprechen

Es ist wichtig, den Lebenszyklus einer Funktion zu verwalten, um sicherzustellen, dass sie ordnungsgemäß aufgelöst wird. Durch korrektes Beenden von Funktionen können Sie übermäßige Aufladungen von Funktionen vermeiden, die zu lange ausgeführt werden oder eine Endlosschleife aufweisen. Sie können auch sicherstellen, dass die Cloud-Funktionsinstanz, auf der Ihre Funktion ausgeführt wird, nicht heruntergefahren wird, bevor Ihre Funktion ihren Beendigungszustand oder -status erfolgreich erreicht hat.

Verwenden Sie diese empfohlenen Ansätze, um den Lebenszyklus Ihrer Funktionen zu verwalten:

  • Lösen Sie Funktionen, die eine asynchrone Verarbeitung ausführen (auch als "Hintergrundfunktionen" bezeichnet), indem Sie ein JavaScript-Versprechen zurückgeben .
  • Beenden Sie HTTP-Funktionen mit res.redirect() , res.send() oder res.end() .
  • Beenden Sie eine synchrone Funktion mit einem return; Aussage.

Vereinfachen Sie asynchronen Code mit JavaScript-Versprechungen

Versprechen sind eine moderne Alternative zu Rückrufen für asynchronen Code. Ein Versprechen repräsentiert eine Operation und den zukünftigen Wert, den sie zurückgeben kann. Außerdem können Sie Fehler weitergeben, die dem Versuch / Fang in synchronem Code ähneln. Informationen zu Versprechungen finden Sie im Firebase SDK im Firebase-Blog und zu allgemeinen Versprechungen auf MDN .

Wie Versprechen mit Funktionen funktionieren

Wenn Sie ein JavaScript-Versprechen an eine Funktion zurückgeben, wird diese Funktion so lange ausgeführt, bis das Versprechen aufgelöst oder abgelehnt wird. Um anzuzeigen, dass eine Funktion ihre Arbeit erfolgreich abgeschlossen hat, sollte das Versprechen gelöst werden. Um einen Fehler anzuzeigen, sollte das Versprechen abgelehnt werden. Dies bedeutet, dass Sie nur die Fehler behandeln müssen, die Sie möchten.

Der folgende Code verwendet eine Firebase Realtime Database- ref und setzt ihren Wert auf "world!" . Wenn Sie das Ergebnis von set , wird Ihre Funktion garantiert so lange ausgeführt, bis die asynchrone Arbeit des Schreibens der Zeichenfolge in die Datenbank vollständig abgeschlossen ist:

 // Always change the value of "/hello" to "world!"
exports.hello = functions.database.ref('/hello').onWrite(event => {
  // set() returns a promise. We keep the function alive by returning it.
  return event.data.ref.set('world!').then(() => {
    console.log('Write succeeded!');
  });
});
 

Beispiele im Kontext

Die meisten Codebeispiele für Cloud-Funktionen enthalten Beispiele für die ordnungsgemäße Beendigung von Funktionen. Hier sind einige, die typische Fälle zeigen: