NODEJS עצירת המשך ביצוע פעולות
-
@חוקר
אתה לא מעוניין "לחכות" במקרה שחסר נתון.
אלא להפסיק לחלוטין את הריצה, ולבקש את הנתון החסר. ואז כל התהליך יתחיל מהתחלה.בקשר לדוגמה תוכל לשלוח לי במייל אבל אני לא התכוונתי לשלוח לי ממש את מה שאתה עושה אלא הסבר איך אתה עובד כלומר לפי מה. אבל תוכל לשלוח לי למייל אם תרצה.
-
-
מה שדוד כתב פה
https://tchumim.com/post/59303
זה מושלם.
אני גם התעסקתי עם זה ואני ממש חושב שזה מושלם.
אחרי שאתה יודע שכל הנתונים קיימים אז תתחיל לעבד נתונים.
ואם יש לך צורך לאמת נתון.
אז תעשה עוד מאפיין באובייקט של כל נתון
שיכיל פונקציה שבודקת שהנתון נכון. אם היא מחזירה ריק סימן שאין בעיה. אם היא מחזירה טקסט של שגיאה. אתה שולח את זה ללקוח. -
@dovid
כרגיל אני אוהב ללמוד בין השורות
אני רואה פה תחביר חדש ולא מוכר.. אני רוצה להבין אותו.
במקום לכתוב הכל עם סוגריים מסולסלות ניתן להשים הכל באותו שורה (הוי אומר לפני ה ; שמפריד לנו שורה בקוד, ואז הכל רץ כאילו בתוך סוגריים, משהו כזה
אני מתכווין לחלק הזה ממה שכתבתfor (var key of props) if(!query[key.name]) return res.send(`read=${key.client_msg}=${key.name}`);
(ככה זה כשלא לומדים ליבה..)
-
גם בPHP זה ככה...
כל המקרים בהם יש {} לבלוק פקודות (כמו if, while וכו'), אפשר לוותר עליו אם זה שורה בודדת (למעט try).
אני מאוד מחבב את זה כשאפשר כי זה מוסיף קריאות לדעתי (אבל כשלא משתמשים בIDE יש בזה סיכון לטעויות של הוספת שורה מתחת במחשבה שזה חלק מהבלוק). -
@nigun אמר בNODEJS עצירת המשך ביצוע פעולות:
@חוקר
אני עדיין לא הבנתי מה אתה מרוויח מלעבוד עם NODE בשביל ימות המשיח
יכול להיות שאני טועה
אבל לכאורה אפשר לבנות הכל בPHP ואם יש החלקים שאתה צריך בNODE תבנה אותם בנפרד
ותעשה הפניה מהסקריפט של PHPהן אמת שהרבה דברים, ואת רוב המערכות שלי בניתי ב PHP.
אני משתמש בינתיים בנוד לשני מטרות, מלבד ה בינתיים הכל בPHP (אולי בגלל חבלי קליטה, ואח"כ אני יעבוד רק עם נוד).
כעת מה שאני משתמש בנוד הוא למערכות של צ'רידי וקוזמאצ', ששם יש לנוד מעלה שהתהליך רץ כל הזמן והוא מתרענן מול שרתי החברות הנ"ל ללא קשר לכמות המאזינים, משא"כ בPHP הייתי חייב לבצע בדיקה לכל מאזין בנפרד, דבר שהקשה על השרת ולא עמד טוב בעומסים.
והמטרה הבאה בתור ששיכבתי אותה לנוד (כבר פעילה מערב פסח, אך עדיין אני מעביר בשלבים עוד ועוד חלקים מהמערכת) ישיבה על קברו שיש שם הרבה שאילתאות ונתונים שחוזרים על עצמם שחבל לבדוק אותם מול בסיס הנתונים לכל אחד בנפרד, וחבל לכתוב אותם לכל סקריפט בנפרד אלא הכל מאוחד תחת תהליך אחד שכולל הכל, (כולל אפילו בדיקה באמצעות FTP האם הקבצים למחר כבר נמצאים במערכת בימות המשיח ושליחת התראה למייל וכו').
נגמור עם זה נעשה חושבים מה הלאה.. -
@nigun אמר בNODEJS עצירת המשך ביצוע פעולות:
@dovid ידעתי שיכעסו עלי קצת
רק רציתי להבין מה המעלה בלעבוד לנוד עם מערכות ימות המשיח
ששם לכאורה במערכת רגילה אין שום מעלהאני התייחסתי ללכאורה. שזה כמו לומר שמכונית לא יותר טובה מסוסים בסביבה עירונית...
-
אז לפי הנראה הכי גמיש מבחינתי לכתוב בצורה הזאת:
var user_id; if (typeof (user_id = read('id')) === 'undefined') return false ; var name; if (typeof (name = read('name')) === 'undefined') return false ; fetch(`http://aaa.com?name=${name}&id=${id}`); res.end('id_list_message=נשלח בהצלחה'); function read(var_name){ if (query[var_name]){ return query[var_name]; }else{ return res.end('read=הקש זהות=id'); } }
אמנם זה קצת יותר קוד ממה שאני רגיל, אבל זה מספק לי את הגמישות שאני צריך.
-
@אהרן
user_id אמור לקבל ערך חוזר מ read, לכן לא עשיתי אותו כמו מה שכתבת.
וכן זה לא פעולה של חיבור לבסיס נתונים וכדומה שיש לי כאן מה לחכות, אלא זה פונקצית בדיקה, באם הערך קיים בURL זה מחזיר את ערכו, אחרת זה מדפיס למסך הוראה למערכת של ימות שיחזיר את הערך המבוקש ומפסיק את המשך הריצה (זה היה כל המטרה שלי בדיון כאן, לדעת איך אני עוצר את המשך הריצה במקרה שאני דורש מהמערכת שתחזיר לי ערך שעדיין לא קיים ב URL), ולכן אני לא רואה שום סיבה להכניס כאן await -
@חוקר
לגבי הawait אתה צודק, אך מלבד זה, אהרן הציע לך תחביר מקוצר ופשוט יותר.
אם הערך שחוזר מהפונקציה הtype שלו undefined, זה אומר שגם הערך עצמו הוא undefined.
ממילא אין כל מניעה מלכתוב כמו שאהרון הציע.
כנ"ל return false שקול לreturn, כי בjs אם הערך null , undefined או false זה אותו דבר (כל זמן שאתה לא משתמש ב===) -
@dovid אמר בNODEJS עצירת המשך ביצוע פעולות:
כל המקרים בהם יש {} לבלוק פקודות (כמו if, while וכו'), אפשר לוותר עליו אם זה שורה בודדת (למעט try).
אני מאוד מחבב את זה כשאפשר כי זה מוסיף קריאות לדעתיבמאמר המוסגר, יצא לי לראות לאחרונה בספר code complete שהוא טוען שגם בכזה מקרה עדיף בלוק, כי ברוב המקרים מוסיפים אח"כ עוד פקודות, ולא שמים לב שאין בלוק.
זה הפתיע גם אותי, כי גם אני הייתי כותב בשיטה הזו ומאד אהבתי את זה
-
@WWW 99% בדיוק בשביל יש כללים כדי שהקוד לא יהיה תלוי בקריזה של המתכנת ותמיד יובן ולא יהיו בעיות.
יש לי שתי סיבות למה אצלי אין חשש: א. בסטייל הרגיל של C#, מתי שעושים בלוק מתבזבזים שתי שורות ריקות כי ה } תופס שורה וממילא מתי שאין את השורה קל לקלוט שמדובר ב"נוסח הקצר". ב. הIDE מזיח אוטומטית וזה בולט לעין.