Zanim zrozumiesz next
, musisz mieć pojęcie o cyklu Zapytanie-Odpowiedź w węźle, ale nie za bardzo szczegółowo. Zaczyna się od zgłoszenia żądania HTTP dla określonego zasobu i kończy się, gdy odeślesz odpowiedź do użytkownika, tj. Gdy napotkasz coś takiego jak res.send („Hello World”);
spójrzmy na bardzo prosty przykład.
app.get('/hello', function (req, res, next) {
res.send('USER')
})
Tutaj nie potrzebujemy next (), ponieważ resp.send zakończy cykl i przekaże sterowanie z powrotem do oprogramowania pośredniego trasy.
Teraz spójrzmy na inny przykład.
app.get('/hello', function (req, res, next) {
res.send("Hello World !!!!");
});
app.get('/hello', function (req, res, next) {
res.send("Hello Planet !!!!");
});
Tutaj mamy 2 funkcje oprogramowania pośredniego dla tej samej ścieżki. Ale zawsze dostaniesz odpowiedź od pierwszego. Ponieważ jest to montowane najpierw na stosie oprogramowania pośredniego, a res.send zakończy cykl.
Ale co, jeśli zawsze nie chcemy „Hello World !!!!” odpowiedź z powrotem. W niektórych warunkach możemy chcieć „Hello Planet !!!!” odpowiedź. Zmodyfikujmy powyższy kod i zobaczmy, co się stanie.
app.get('/hello', function (req, res, next) {
if(some condition){
next();
return;
}
res.send("Hello World !!!!");
});
app.get('/hello', function (req, res, next) {
res.send("Hello Planet !!!!");
});
Co next
tu robisz? I tak, możesz mieć fałdy. Pominie pierwszą funkcję oprogramowania pośredniego, jeśli warunek jest spełniony, i wywoła następną funkcję oprogramowania pośredniego, a otrzymasz "Hello Planet !!!!"
odpowiedź.
Następnie przekaż formant do następnej funkcji na stosie oprogramowania pośredniego.
Co się stanie, jeśli pierwsza funkcja oprogramowania pośredniego nie odeśle żadnej odpowiedzi, ale wykona logikę, a następnie otrzymasz odpowiedź z drugiej funkcji oprogramowania pośredniego.
Coś jak poniżej: -
app.get('/hello', function (req, res, next) {
// Your piece of logic
next();
});
app.get('/hello', function (req, res, next) {
res.send("Hello !!!!");
});
W takim przypadku musisz wywołać obie funkcje oprogramowania pośredniego. Tak więc jedynym sposobem na przejście do drugiej funkcji oprogramowania pośredniego jest wywołanie next ();
Co jeśli nie wykonasz połączenia do następnego. Nie należy oczekiwać, że druga funkcja oprogramowania pośredniego zostanie wywołana automatycznie. Po wywołaniu pierwszej funkcji żądanie pozostanie zawieszone. Druga funkcja nigdy nie zostanie wywołana i nie otrzymasz odpowiedzi.
res.send
do wykonania żądania. Jeśli nie istnieje, prawdopodobnie istnieje inny moduł obsługi, który wygeneruje błąd i wtedy wypełni żądanie.