@חוקר אמר בתתי הפניות ב express:
@אהרן אמר בתתי הפניות ב express:
כי אתה לא רוצה לסיים את ההתקשרות אם המערכת פתוחה.
אכן
התכוונתי לשאול בעיקר החלק השני, שלכאורה החלק של
else next()
מיותר
כשאתה קורא ל res.end()
אתה לא עוצר את הריצה של הפונקציה, אתה מסיים את התקשורת עם הקליינט, הפונקציה עצמה ממשיכה לרוץ, זה שני דברים שונים.
תנסה לדוגמא כך:
res.end();
console.log("res is ended");
ותראה את ההדפסה בקונסול, אפשר לא רק להדפיס אלא לעשות כל דבר אחר, להתחבר למסד נתונים או למערכת קבצים או כל מה שתרצה, רק לא לשלוח עוד מידע לקליינט, לדוגמא אם תנסה כך:
res.end()
res.write("hello")
תקבל שגיאה שהתקשורת כבר נסגרה ואז הפונקציה תכשל בגלל השגיאה.
אז אם לא תשים את זה בתוך else מה שיקרה שהפונקציה תמשיך ותקרא לשאר הנתיבים גם אם התקשורת כבר נסגרה, וזה יפלוט שגיאה.