Biorąc pod uwagę funkcję chmury FireBase, jaki jest właściwy sposób na niepowodzenie zdarzenia (z zamiarem ponownego użycia) bez powodowania zimnego startu ?

Ta dokumentacja sugeruje, że nieobsługowane błędy powodują rozruch zimny. Podczas korzystania z funkcji async Zakładam, że ma zastosowanie do odrzucenia {X1}}.

rzuć nowy błąd ("Nie udałem cię"); // spowoduje, że nie zostanie złapany

Biorąc pod uwagę, że funkcje często polegają na usługach trzecich, które nie mogą być w 100% niezawodne, nie chcę, aby moje funkcje ponoszą dalsze kary z zimna rozpoczynają się z powodu przejściowych błędów w dół.

Czy to nawet zalecana strategia? Używam Firestore, więc uważałem, że przechowywanie zdarzeń retywnych w kolekcji temp, która jest zeskrobana zaplanowaną funkcją chmur, ale wydaje się to niepotrzebnie złożone.

0
geg 21 listopad 2020, 01:30

1 odpowiedź

Najlepsza odpowiedź

Odrzucona obietnica sama nie jest "nieznośnym błędem". To, co pokazujesz, jest rzuconym wyjątkiem i nie ma nic do zrobienia bezpośrednio z obietnicami. Wyłączony wyjątek, który ma ucieczkę, wywołanie zwrotne jest uważane za nieobsługiwane. Jeśli potrzebujesz świadomie niepowodzeniem wywołania funkcji, tylko zwróć odrzuconą obietnicę , nie rzucić cokolwiek, jak twój cytowany przykład jest teraz.

Prosta odrzucona obietnica może być tworzona w razie potrzeby przy użyciu Promise.Reject ():

return Promise.reject(new Error('fail'))
2
Doug Stevenson 20 listopad 2020, 22:35