Cloud-Funktionen für Firebase: Serialisierungsversprechen

8

In einem onWrite-Handler möchte ich mehrere Lesevorgänge durchführen, einige Daten bearbeiten und dann speichern. Ich bin ziemlich neu im Promise-Konzept. Bin ich mit der folgenden Promise-Behandlung sicher, wenn Firebase meine Abfragen nicht löscht, bevor sie erledigt sind?

%Vor%

Das obige funktioniert, aber nicht sicher, es ist der richtige Weg ...

    
jazzgil 18.03.2017, 14:08
quelle

1 Antwort

7

Wenn Ihre Funktion weiterhin ausgeführt wird, nachdem sie zurückgegeben wurde (oder das Versprechen, das Ihre Funktion zurückgibt, aufgelöst wurde), können Google Cloud-Funktionen Ihren Code jederzeit unterbrechen. Es gibt jedoch keine Garantie dafür, dass es dies sofort tut.

In Ihrem Codebeispiel geben Sie das Ergebnis des endgültigen then() zurück. Da Sie in diesem then() -Block nichts zurückgeben, kann GCF den Aufruf von update() oder unterbrechen, damit der Code weiterhin länger als benötigt ausgeführt wird.

Um dies zu korrigieren, vergewissern Sie sich, dass Sie das Versprechen aus dem update() -Aufruf "aufblasen":

%Vor%

In diesem Code ist die von update() zurückgegebene Zusage diejenige, die an GCF zurückgegeben wird. Dadurch erhalten Sie die Information, dass Ihre Funktion genau so lange ausgeführt wird, wie sie benötigt.

    
Frank van Puffelen 18.03.2017, 14:23
quelle