דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. NODEJS עצירת המשך ביצוע פעולות

NODEJS עצירת המשך ביצוע פעולות

מתוזמן נעוץ נעול הועבר תכנות
38 פוסטים 9 כותבים 1.0k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ח מנותק
    ח מנותק
    חוקר
    השיב לyossiz ב נערך לאחרונה על ידי
    #6

    @yossiz אמר בNODEJS עצירת המשך ביצוע פעולות:

       if (var user_id = read('id')) {
           var name = read('name');
           fetch(`http://aaa.com?name=${name}&id=${id}`);
           res.end('id_list_message=נשלח בהצלחה');
        }
        else  res.end('read=הקש זהות=id');
    }
    
    function read(var_name){
        if (query[var_name]){
            return query[var_name];
        }else{
            return null;
        }
    }
    

    הבעיה היא כאשר יש לך עשר נתונים לקלוט שחלק מהם תלויים אחד בשני אם הקשת 1 השלב הבא הוא א, ואם הקשת 2 השלב הבא הוא ב וכו'.
    לעשות הכל ב if מאוד מסרבל.
    לעומת זאת ב PHP אתה שם בפונקציה של read את exit()
    לדוגמא: (לא רלוונטית כי זה לא בPHP, אבל הרעיון)

    function read(var_name){
        if (query[var_name]){
            return query[var_name];
        }else{
            res.end('read=הקש זהות=id');
            exit();
        }
    }
    

    ואז בכל פעם לאחר הדפסה של הוראה לימות הסקריפט לא יתקדם לשלב הבא.

    תגובה 1 תגובה אחרונה
    0
    • yossizY מנותק
      yossizY מנותק
      yossiz
      כתב ב נערך לאחרונה על ידי yossiz
      #7

      @חוקר בנוד אין כזה דבר שעוצר את כל התהליך, (חוץ מ-process.exit וזה אתה לא רוצה)

      בשפת אחרות היה אפשר להשתמש ב-goto אבל ב-JS גם זה לא קיים

      צריך לבנות את זה בצורה אחרת. (משהו כעין state machine?)

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

      תגובה 1 תגובה אחרונה
      1
      • dovidD מנותק
        dovidD מנותק
        dovid ניהול
        כתב ב נערך לאחרונה על ידי dovid
        #8

        @חוקר אני ישמח אם תרחיב על אופן העבודה מול ימות המשיח.
        אם נניח חסר את הנתון ואתה מבקש אותו שוב, ימות המשיח מבקש זאת המלקוח, ואחרי התשובה פונה אליך שוב עם URL עדכני, נכון?
        בURL הבא יהיו כל הנתונים שאתה רוצה? או רק מה שהיה חסר ללא הנתונים הראשוניים של אותה השיחה?

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        ח תגובה 1 תגובה אחרונה
        0
        • ח מנותק
          ח מנותק
          חוקר
          השיב לdovid ב נערך לאחרונה על ידי חוקר
          #9

          @dovid אמר בNODEJS עצירת המשך ביצוע פעולות:

          @חוקר אני ישמח אם תרחיב על אופן העבודה מול ימות המשיח.
          אם נניח חסר את הנתון ואתה מבקש אותו שוב, ימות המשיח מבקש זאת המלקוח, ואחרי התשובה פונה אליך שוב עם URL עדכני, נכון?
          בURL הבא יהיו כל הנתונים שאתה רוצה? או רק מה שהיה חסר ללא הנתונים הראשוניים של אותה השיחה?

          כל פעם הוא שולח את כל ה URL פלוס הערך האחרון שנוסף, אם אתה שולח לו שאתה צריך שוב ID כגון לתקן וכדומה הוא יישלח לך
          http://domain.com/aaa?ApiDID=033080222&ApiRealDID=033080222&ApiPhone=0521234567&ApiExtension=/1&id=222333444&id=111444555
          ואח"כ תבקש את השם הוא ייתן לך
          http://domain.com/aaa?ApiDID=033080222&ApiRealDID=033080222&ApiPhone=0521234567&ApiExtension=/1&id=222333444&id=111444555&name=name&lest=2
          וכן הלאה
          (ברעיון זה טירוף כי בעצם כדי לקבל את הערך החמישי שאני צריך בשיחה זו, יש חמש בקשות הלוך ושוב בין השרתים, ובכל שלב הURL מתארך ולפי הנתונים ב URL על השרת שלי לבצע את ההתקדמות לשלב הבא. ואז הURL מתארך בפרמטר נוסף וכו'.)
          כעת ברור יותר?

          תגובה 1 תגובה אחרונה
          1
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            כתב ב נערך לאחרונה על ידי dovid
            #10

            אוקי. אני מבין שגם אי אפשר לבקש בבת אחת שתי ערכים.
            אז תראה את הקוד הזה ותבין מה אתה צריך לעשות:

            var props = ['id', 'name', 'tel', 'last4cerdit']; //רשימת נתונים נדרשים 
            
            for (var key of props) 
              if(!query[var_name])
                return res.send('read=???=' + var_name);
            
            //בשלב זה אתה יודע שכל המאפיינים קיימים
            
            fetch(`http://aaa.com?name=${query.id}&id=${query.name}`);
            res.end('id_list_message=נשלח בהצלחה');
            

            לגבי מה שאתה חושב שזה טירוף, כל עוד אתה בנוד זה בסדר גמור לעילא.

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            1
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #11

              בשביל ההודעה ללקוח אתה צריך להתאים למאפיין החסר, אז תוכל לעשות קל יותר לתחזוקה ככה:

              //רשימת נתונים נדרשים 
              var props = [                          
                {name: 'id', client_msg: 'הקש זהות'},
                {name: 'name', client_msg: 'הקש שם'},
                {name: 'tel', client_msg: 'אכול דגים'},
                {name: 'last4cerdit', client_msg: 'כל טוב'},
              ]; 
              
              for (var key of props) 
                if(!query[key.name])
                  return res.send(`read=${key.client_msg}=${key.name}`);
              
              //בשלב זה אתה יודע שכל המאפיינים קיימים
              
              fetch(`http://aaa.com?name=${query.id}&id=${query.name}`);
              res.end('id_list_message=נשלח בהצלחה');
              
              

              אני מבין שיש הרבה מאפיינים שלא תמיד נדרשים במתודות שונות אז כדאי להעביר את הרשימה מחות לפונקציה לשימושים חוזרים וחלקיים.

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              ח תגובה 1 תגובה אחרונה
              1
              • ח מנותק
                ח מנותק
                חוקר
                השיב לdovid ב נערך לאחרונה על ידי
                #12

                @dovid אמר בNODEJS עצירת המשך ביצוע פעולות:

                בשביל ההודעה ללקוח אתה צריך להתאים למאפיין החסר, אז תוכל לעשות קל יותר לתחזוקה ככה:

                //רשימת נתונים נדרשים 
                var props = [                          
                  {name: 'id', client_msg: 'הקש זהות'},
                  {name: 'name', client_msg: 'הקש שם'},
                  {name: 'tel', client_msg: 'אכול דגים'},
                  {name: 'last4cerdit', client_msg: 'כל טוב'},
                ]; 
                
                for (var key of props) 
                  if(!query[key.name])
                    return res.send(`read=${key.client_msg}=${key.name}`);
                
                //בשלב זה אתה יודע שכל המאפיינים קיימים
                
                fetch(`http://aaa.com?name=${query.id}&id=${query.name}`);
                res.end('id_list_message=נשלח בהצלחה');
                
                

                אני מבין שיש הרבה מאפיינים שלא תמיד נדרשים במתודות שונות אז כדאי להעביר את הרשימה מחות לפונקציה לשימושים חוזרים וחלקיים.

                ברור.
                הפונקציה של read שציטטי כאן הייתה רק לפורום ולא הפונקציה המלאה שיש הרבה אפשרויות, אך לא כל קוד ניתן להעתקה..

                אגב אתה צודק שלא ניתן לבקש שני ערכים יחד.
                וכן לגבי הרעיון של מערך, זה לא כ"כ רלוונטי כי בדר"כ הנתון הבא מתייחס להקשה הקודמת, כגון בתפריט שאם הוא הקיש אחד אני מעביר אותו לתפריט לשמיעת הלימוד היומי או החודשי, ואם הקיש שתיים הוא מועבר למענה על השאלות, ושם עליו לבחור מתוך התפריט שבחלק יש תתי תפריטים ובחלק אין וכו'.

                אך כעת נפל לי האסימון שאם כל הבעיה הייתה ש return res.end לא עבד לי' כי זה היה בתוך הפונקציה של read, א"כ איפה שאני חייב שהוא לא יעבור הלאה לפני נתון מסויים, שם אני יכול להשתמש ב return res.end בקוד עצמו ולא בתוך פונקציה.
                אצטרך לבדוק האם אני צודק.
                בכל מקרה תודה על כל היעוץ

                תגובה 1 תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי
                  #13

                  אני גם חשבתי שצריך פה ניווט היררכי כמו תפריט עם תפריטי משנה, הבעיה שאין לי מושג איך אתה מעבד את הניווט.
                  אם תתן לי תמונה מלאה של המציאות אשמח לייעץ לך איך נכון לבצע זאת בנוד לדעתי.

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  ח תגובה 1 תגובה אחרונה
                  1
                  • ח מנותק
                    ח מנותק
                    חוקר
                    השיב לdovid ב נערך לאחרונה על ידי
                    #14

                    @dovid אמר בNODEJS עצירת המשך ביצוע פעולות:

                    אני גם חשבתי שצריך פה ניווט היררכי כמו תפריט עם תפריטי משנה, הבעיה שאין לי מושג איך אתה מעבד את הניווט.
                    אם תתן לי תמונה מלאה של המציאות אשמח לייעץ לך איך נכון לבצע זאת בנוד לדעתי.

                    א"כ הייתי שולח לך דוגמה בפרטי.. (בתקוה להבנה)
                    לשלוח למייל?

                    אגב תוך כדי עבודה כעת אני רואה מקום נוסף של בעיה.
                    לדוגמה

                        let press_date = read('הקשתאריך', 'date');
                        now = new Date(press_date.substr(4,4) + '-' + press_date.substr(2,2) + '-' + press_date.substr(0,2));
                    

                    כאשר עדיין הוא לא הקיש תאריך, אלא כעת נשלח לימות
                    read=date=הקשתאריך
                    אני מקבל בינתיים שגיאה בקונסול

                    TypeError: press_date.substr is not a function
                    

                    כי הרי עדיין press_date עוד לא הוכלס ועדיין הוא אינו משתנה מסוג מחרוזת.
                    שזה יוצר שלא רק כאשר אני מחכה לקבל את כל המשתנים לפעולה בסוף אני בבעיה, אלא גם בכל מיני שלבים בקוד נוצרים שגיאות (לא קריטיות).
                    ואכן לאחר האיכלוס את press_date הכל בסדר ללא שגיאה.

                    תגובה 1 תגובה אחרונה
                    0
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #15

                      @חוקר
                      אתה לא מעוניין "לחכות" במקרה שחסר נתון.
                      אלא להפסיק לחלוטין את הריצה, ולבקש את הנתון החסר. ואז כל התהליך יתחיל מהתחלה.

                      בקשר לדוגמה תוכל לשלוח לי במייל אבל אני לא התכוונתי לשלוח לי ממש את מה שאתה עושה אלא הסבר איך אתה עובד כלומר לפי מה. אבל תוכל לשלוח לי למייל אם תרצה.

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      ח תגובה 1 תגובה אחרונה
                      0
                      • ח מנותק
                        ח מנותק
                        חוקר
                        השיב לdovid ב נערך לאחרונה על ידי
                        #16

                        @dovid אמר בNODEJS עצירת המשך ביצוע פעולות:

                        אתה לא מעוניין "לחכות" במקרה שחסר נתון.
                        אלא להפסיק לחלוטין את הריצה, ולבקש את הנתון החסר. ואז כל התהליך יתחיל מהתחלה.

                        אכן, בכל שלב השרת מתחיל את התהליך מהתחלה עד נקודת העצירה של השלב היכן שהוא אוחז.

                        nigunN תגובה 1 תגובה אחרונה
                        0
                        • nigunN מנותק
                          nigunN מנותק
                          nigun
                          השיב לחוקר ב נערך לאחרונה על ידי
                          #17

                          @חוקר
                          אני עדיין לא הבנתי מה אתה מרוויח מלעבוד עם NODE בשביל ימות המשיח
                          יכול להיות שאני טועה
                          אבל לכאורה אפשר לבנות הכל בPHP ואם יש החלקים שאתה צריך בNODE תבנה אותם בנפרד
                          ותעשה הפניה מהסקריפט של PHP

                          מייל: nigun@duck.com

                          dovidD ח 2 תגובות תגובה אחרונה
                          2
                          • M מנותק
                            M מנותק
                            magicode
                            כתב ב נערך לאחרונה על ידי magicode
                            #18

                            מה שדוד כתב פה
                            https://tchumim.com/post/59303
                            זה מושלם.
                            אני גם התעסקתי עם זה ואני ממש חושב שזה מושלם.
                            אחרי שאתה יודע שכל הנתונים קיימים אז תתחיל לעבד נתונים.
                            ואם יש לך צורך לאמת נתון.
                            אז תעשה עוד מאפיין באובייקט של כל נתון
                            שיכיל פונקציה שבודקת שהנתון נכון. אם היא מחזירה ריק סימן שאין בעיה. אם היא מחזירה טקסט של שגיאה. אתה שולח את זה ללקוח.

                            תגובה 1 תגובה אחרונה
                            3
                            • dovidD מנותק
                              dovidD מנותק
                              dovid ניהול
                              השיב לnigun ב נערך לאחרונה על ידי dovid
                              #19

                              @nigun תהיה בריא. אתה מנסה לחסוך לו חבלי קליטה ואומר לו שלא צריך לעבור למגדלי יוקרה אפשר לחיות בביקתה...

                              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                              בכל נושא אפשר ליצור קשר dovid@tchumim.com

                              nigunN תגובה 1 תגובה אחרונה
                              3
                              • ח מנותק
                                ח מנותק
                                חוקר
                                כתב ב נערך לאחרונה על ידי חוקר
                                #20

                                @dovid
                                כרגיל אני אוהב ללמוד בין השורות
                                אני רואה פה תחביר חדש ולא מוכר.. אני רוצה להבין אותו.
                                במקום לכתוב הכל עם סוגריים מסולסלות ניתן להשים הכל באותו שורה (הוי אומר לפני ה ; שמפריד לנו שורה בקוד, ואז הכל רץ כאילו בתוך סוגריים, משהו כזה
                                אני מתכווין לחלק הזה ממה שכתבת

                                for (var key of props) 
                                  if(!query[key.name])
                                    return res.send(`read=${key.client_msg}=${key.name}`);
                                

                                (ככה זה כשלא לומדים ליבה..)

                                תגובה 1 תגובה אחרונה
                                0
                                • dovidD מנותק
                                  dovidD מנותק
                                  dovid ניהול
                                  כתב ב נערך לאחרונה על ידי dovid
                                  #21

                                  גם בPHP זה ככה...
                                  כל המקרים בהם יש {} לבלוק פקודות (כמו if, while וכו'), אפשר לוותר עליו אם זה שורה בודדת (למעט try).
                                  אני מאוד מחבב את זה כשאפשר כי זה מוסיף קריאות לדעתי (אבל כשלא משתמשים בIDE יש בזה סיכון לטעויות של הוספת שורה מתחת במחשבה שזה חלק מהבלוק).

                                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                  clickoneC תגובה 1 תגובה אחרונה
                                  2
                                  • ח מנותק
                                    ח מנותק
                                    חוקר
                                    השיב לnigun ב נערך לאחרונה על ידי
                                    #22

                                    @nigun אמר בNODEJS עצירת המשך ביצוע פעולות:

                                    @חוקר
                                    אני עדיין לא הבנתי מה אתה מרוויח מלעבוד עם NODE בשביל ימות המשיח
                                    יכול להיות שאני טועה
                                    אבל לכאורה אפשר לבנות הכל בPHP ואם יש החלקים שאתה צריך בNODE תבנה אותם בנפרד
                                    ותעשה הפניה מהסקריפט של PHP

                                    הן אמת שהרבה דברים, ואת רוב המערכות שלי בניתי ב PHP.
                                    אני משתמש בינתיים בנוד לשני מטרות, מלבד ה בינתיים הכל בPHP (אולי בגלל חבלי קליטה, ואח"כ אני יעבוד רק עם נוד).
                                    כעת מה שאני משתמש בנוד הוא למערכות של צ'רידי וקוזמאצ', ששם יש לנוד מעלה שהתהליך רץ כל הזמן והוא מתרענן מול שרתי החברות הנ"ל ללא קשר לכמות המאזינים, משא"כ בPHP הייתי חייב לבצע בדיקה לכל מאזין בנפרד, דבר שהקשה על השרת ולא עמד טוב בעומסים.
                                    והמטרה הבאה בתור ששיכבתי אותה לנוד (כבר פעילה מערב פסח, אך עדיין אני מעביר בשלבים עוד ועוד חלקים מהמערכת) ישיבה על קברו שיש שם הרבה שאילתאות ונתונים שחוזרים על עצמם שחבל לבדוק אותם מול בסיס הנתונים לכל אחד בנפרד, וחבל לכתוב אותם לכל סקריפט בנפרד אלא הכל מאוחד תחת תהליך אחד שכולל הכל, (כולל אפילו בדיקה באמצעות FTP האם הקבצים למחר כבר נמצאים במערכת בימות המשיח ושליחת התראה למייל וכו').
                                    נגמור עם זה נעשה חושבים מה הלאה..

                                    תגובה 1 תגובה אחרונה
                                    2
                                    • nigunN מנותק
                                      nigunN מנותק
                                      nigun
                                      השיב לdovid ב נערך לאחרונה על ידי nigun
                                      #23

                                      @dovid ידעתי שיכעסו עלי קצת
                                      רק רציתי להבין מה המעלה בלעבוד לנוד עם מערכות ימות המשיח
                                      ששם לכאורה במערכת רגילה אין שום מעלה
                                      אבל כנראה זה רק תירוץ על מה להתאמן בשביל ללמוד נוד

                                      מייל: nigun@duck.com

                                      dovidD תגובה 1 תגובה אחרונה
                                      1
                                      • dovidD מנותק
                                        dovidD מנותק
                                        dovid ניהול
                                        השיב לnigun ב נערך לאחרונה על ידי
                                        #24

                                        @nigun אמר בNODEJS עצירת המשך ביצוע פעולות:

                                        @dovid ידעתי שיכעסו עלי קצת
                                        רק רציתי להבין מה המעלה בלעבוד לנוד עם מערכות ימות המשיח
                                        ששם לכאורה במערכת רגילה אין שום מעלה

                                        אני התייחסתי ללכאורה. שזה כמו לומר שמכונית לא יותר טובה מסוסים בסביבה עירונית...

                                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                        nigunN תגובה 1 תגובה אחרונה
                                        3
                                        • nigunN מנותק
                                          nigunN מנותק
                                          nigun
                                          השיב לdovid ב נערך לאחרונה על ידי
                                          #25

                                          @dovid אני הייתי ממשיל את זה לאופניים חשמליות ורכב בסביבה עירונית

                                          מייל: nigun@duck.com

                                          M תגובה 1 תגובה אחרונה
                                          0

                                          • 1
                                          • 2
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום