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


  • תכנות

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

    res.end(data);
    או
    res.send(data);
    

    ולהפסיק בכך את המשך הקוד שנכתב בהמשך.
    בPHP זה נורא פשוט

    print $data
    exit();
    

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



  • אתה רוצה יציאה מפונקציה, זה עושים עם return.

    res.end(data);
    return;
    

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

    return res.end(data);
    

    (זה בעצם יחזיר את תוצאת הפוקנציה res.end ויעצור, וזה לא אמור להיות אכפת לך מה באמת חוזר מres.end שהרי אין מי שעושה שימוש בתוצאת הפונקציה שלך).

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



  • רק עכשיו קראתי את סיום הדברים (כנראה ערכת):

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

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

    $send_to_printer($big_content);
    echo "now print";
    

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


  • תכנות

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

    אתה רוצה יציאה מפונקציה, זה עושים עם return.

    res.end(data);
    return;
    

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

    return res.end(data);
    

    (זה בעצם יחזיר את תוצאת הפוקנציה res.end ויעצור, וזה לא אמור להיות אכפת לך מה באמת חוזר מres.end שהרי אין מי שעושה שימוש בתוצאת הפונקציה שלך).

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

    אכן אם כותבים למשל כך:

    var get_he_full_date1 = get_he_full_date('2019-05-1');
        res.end(get_he_full_date1);
        return;
        console.log(get_he_full_date1);
    

    ההדפסה לקונסול לא מבוצעת כי ה server/app נעצר.
    הבעיה היא כזו:
    כפי שזה בנוי בימות המשיח ניתן לשלוח תשובה read שיחזיר לי נתון מסויים, שזה אומר כך, בתחילה השיחה אני מקבל קריאת URL לשרת שלי אם נתונים קבועים כגון מספר הטלפון של המתקשר וכו' בצורה כזו
    http://domain.com/aaa?ApiDID=033080222&ApiRealDID=033080222&ApiPhone=0521234567&ApiExtension=/1
    עכשיו אני רוצה לקבל את מספר הזהות של המתקשר, אני שולח תשובה read עם ההגדרות שצריך, וכעת אני מקבל קריאה חדשה + id
    http://domain.com/aaa?ApiDID=033080222&ApiRealDID=033080222&ApiPhone=0521234567&ApiExtension=/1&id=222333444
    מה שאני עושה הוא בעצם פונקציה שבודקת האם הid קיים בURL, אם כן, הוא מכניס אותו למשתנה והשרת ממשיך לנתונים הבאים, אחרת הוא שולח לימות read=הקש זהות=id
    משהו בסגנון

    var user_id = read('id');
    var name = read('name');
    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');
        }
    }
    

    בדוגמא הנ"ל הראיתי שלאחר קליטת הנתונים מהמשתמש אני שולח אותם למשל לשרת אחר.
    לכן אני חייב שרק לאחר אכלוס שני המשתנים name ו id אני יבצע את מה שבהמשך.
    כאן אני בבעיה, כי אפילו אם אני שם return בפונקציה של read זה לא יעבוד לעצור את server/app, כי זה מסיים את הפונקציה עצמה.
    זה הבעיה שלי.



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

    כי ה server/app נעצר

    למה לא כתבת פשוט "כי הפונקציה נעצרת"?

    כאן אני בבעיה, כי אפילו אם אני שם return בפונקציה של read זה לא יעבוד לעצור את server/app, כי זה מסיים את הפונקציה עצמה.

    למה לא לכתוב כך (מן הסתם יש איזה טעויות בקוד כי אני לא מכיר express, אבל הכיוון אפשר להבין):

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

  • תכנות

    @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();
        }
    }
    

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



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

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

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



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


  • תכנות

    @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 מתארך בפרמטר נוסף וכו'.)
    כעת ברור יותר?



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

    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=נשלח בהצלחה');
    

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



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

    //רשימת נתונים נדרשים 
    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 אמר ב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 בקוד עצמו ולא בתוך פונקציה.
    אצטרך לבדוק האם אני צודק.
    בכל מקרה תודה על כל היעוץ



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


  • תכנות

    @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 הכל בסדר ללא שגיאה.



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

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


  • תכנות

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

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

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



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



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



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


  • תכנות

    @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 האם הקבצים למחר כבר נמצאים במערכת בימות המשיח ושליחת התראה למייל וכו').
    נגמור עם זה נעשה חושבים מה הלאה..



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



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

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

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



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



  • @nigun
    כמובן שהרכב זה PHP בציור הזה.


  • תכנות

    אז לפי הנראה הכי גמיש מבחינתי לכתוב בצורה הזאת:

    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');
        }
    }
    

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


  • תכנות

    בשורה 4 חסר await

    if (typeof (user_id = read('id')) === 'undefined') return false ;
    

    ==

    if ( !read('id') )  return;
    

  • תכנות

    @אהרן
    user_id אמור לקבל ערך חוזר מ read, לכן לא עשיתי אותו כמו מה שכתבת.
    וכן זה לא פעולה של חיבור לבסיס נתונים וכדומה שיש לי כאן מה לחכות, אלא זה פונקצית בדיקה, באם הערך קיים בURL זה מחזיר את ערכו, אחרת זה מדפיס למסך הוראה למערכת של ימות שיחזיר את הערך המבוקש ומפסיק את המשך הריצה (זה היה כל המטרה שלי בדיון כאן, לדעת איך אני עוצר את המשך הריצה במקרה שאני דורש מהמערכת שתחזיר לי ערך שעדיין לא קיים ב URL), ולכן אני לא רואה שום סיבה להכניס כאן await


  • תכנות

    @חוקר
    לגבי הawait אתה צודק, אך מלבד זה, אהרן הציע לך תחביר מקוצר ופשוט יותר.
    אם הערך שחוזר מהפונקציה הtype שלו undefined, זה אומר שגם הערך עצמו הוא undefined.
    ממילא אין כל מניעה מלכתוב כמו שאהרון הציע.
    כנ"ל return false שקול לreturn, כי בjs אם הערך null , undefined או false זה אותו דבר (כל זמן שאתה לא משתמש ב===)


התחבר כדי לפרסם תגובה
 

45
מחובר

1.8k
משתמשים

6.0k
נושאים

69.4k
פוסטים

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

כנסו לאתר לקניה מקוונת, או בדקו סניף קרוב לביתכם.

מוצרים עם הנחה

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

בהגעה דרך הלינק, ישנה הנחה בשלב התשלום בקופה!

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