Jak obsłużyć długą pracę, która trwa po zakończeniu żądania HTTP?
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
Jeśli wynik jest ważny, nie uruchamiam po prostu funkcji w tle i nie liczę, że serwer będzie żył wystarczająco długo. Tworzę zadanie z identyfikatorem i statusem, a wykonanie przekazuję do trwałej kolejki. Klient dostaje informację, jak później odczytać wynik.
Program wykonujący zadanie zapisuje sukces albo błąd. Jeśli się zatrzyma, system powinien mieć możliwość wznowienia pracy. To inne zachowanie niż void doWork() bez obsługi i zapisu. W krótkim skrypcie takie uproszczenie czasem wystarcza, ale nie daje trwałej obsługi zadania biznesowego. Błąd po wysłaniu odpowiedzi nie może już zostać zwyczajnie dopisany do tamtej odpowiedzi HTTP.
Dlaczego to ważne: Podstawa przetwarzania dokumentów i długich działań agentów.
Możliwe dopytania: Gdzie użytkownik zobaczy błąd? Jak rozpoznać zadanie porzucone po awarii?
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.
Zacznij od
- B-P01 · Czym jest Node.js i czym różni się od JavaScriptu w przeglądarce? — JavaScript, TypeScript i Node.js
- B-P04 · Co to jest Promise? — JavaScript, TypeScript i Node.js
- B-P10 · Co daje TypeScript i czego nie daje? — JavaScript, TypeScript i Node.js
Dalsza lektura
- Node.js: The Event Loop(otwiera się w nowej karcie)Docs; dostęp 22.10.2026. Fazy event loop, timery i zależności od wersji Node/libuv.