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

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

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

הדרך הנכונה לביצוע קוד אסינכרוני

מתוזמן נעוץ נעול הועבר תכנות
6 פוסטים 4 כותבים 208 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ש מנותק
    ש מנותק
    ש.ב.ח.
    כתב ב נערך לאחרונה על ידי ש.ב.ח.
    #1

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

    אני לא כועס על js אני יודע שככה הטמבל הזה עובד, אני רק רוצה לדעת איך בכל זאת...
    אני יודע שיש asinc וכו' השאלה איפה בדיוק שמים את הawait אם בכלל...

    export function getAmountFromMonthlyDeposit(MonthlyDeposit, children, data, multi = true){
    
    
        if(!multi) children = [children];
        const groupByYears = _.groupBy(children, (i) => i.marriageAge - i.age);
        console.log(groupByYears)
        data = _.sortBy(data, i => i.amount).reverse();
        data = JSON.parse(JSON.stringify(data));
    
        let _return = false;
    
        data.map( a => {
    
            if(_return) return;
    
            a.innerPrograms.map( (b, bi) => {
                if(_return) return;
                console.log('iii')
                let _amountMonthly = (a.amount / b.doublingRatio) / b.depositMonths;
                a.innerPrograms.points =  _amountMonthly/10;
                a.innerPrograms._amountMonthly = _amountMonthly;
            });
    
            let points = {};
            Object.keys(groupByYears).map((key ) => {
                if(_return) return;
                let program = getNearestAmount(a.innerPrograms, Number(key), 'yearsOfWaiting');
                points[key] = {program: program, points: program.points * groupByYears[key].length, countChildren:groupByYears[key].length}
            });
    
            let amountPerPoint = MonthlyDeposit / _.sumBy(points, 'points');
    
            Object.keys(points).map( (p) => {
                if(_return) return;
                let totalPerChild =  (points[p].points / 2) * amountPerPoint;
                if( totalPerChild >= points[p].program._amountMonthly){
                    _return = (totalPerChild * points[p].program.depositMonths) * points[p].program.doublingRatio;
                }
            });
    
        });
    
        return _return;
    }
    
    dovidD yossizY A 3 תגובות תגובה אחרונה
    0
    • ש ש.ב.ח.

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

      אני לא כועס על js אני יודע שככה הטמבל הזה עובד, אני רק רוצה לדעת איך בכל זאת...
      אני יודע שיש asinc וכו' השאלה איפה בדיוק שמים את הawait אם בכלל...

      export function getAmountFromMonthlyDeposit(MonthlyDeposit, children, data, multi = true){
      
      
          if(!multi) children = [children];
          const groupByYears = _.groupBy(children, (i) => i.marriageAge - i.age);
          console.log(groupByYears)
          data = _.sortBy(data, i => i.amount).reverse();
          data = JSON.parse(JSON.stringify(data));
      
          let _return = false;
      
          data.map( a => {
      
              if(_return) return;
      
              a.innerPrograms.map( (b, bi) => {
                  if(_return) return;
                  console.log('iii')
                  let _amountMonthly = (a.amount / b.doublingRatio) / b.depositMonths;
                  a.innerPrograms.points =  _amountMonthly/10;
                  a.innerPrograms._amountMonthly = _amountMonthly;
              });
      
              let points = {};
              Object.keys(groupByYears).map((key ) => {
                  if(_return) return;
                  let program = getNearestAmount(a.innerPrograms, Number(key), 'yearsOfWaiting');
                  points[key] = {program: program, points: program.points * groupByYears[key].length, countChildren:groupByYears[key].length}
              });
      
              let amountPerPoint = MonthlyDeposit / _.sumBy(points, 'points');
      
              Object.keys(points).map( (p) => {
                  if(_return) return;
                  let totalPerChild =  (points[p].points / 2) * amountPerPoint;
                  if( totalPerChild >= points[p].program._amountMonthly){
                      _return = (totalPerChild * points[p].program.depositMonths) * points[p].program.doublingRatio;
                  }
              });
      
          });
      
          return _return;
      }
      
      dovidD מנותק
      dovidD מנותק
      dovid
      ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #2

      JS היא שפה סינכרונית ב99%. האחוז שלא סינכרוני כולו פעולות דיסק/רשת, אין כאלו פה.
      וכל הקוד הזה נראה סינכרוני לגמרי, כנראה הבעיה היא מבאג אחר,
      אני מבין שקשה לפתור את הבאג כי גם לי היה מאוד קשה קריאת הקוד...
      תפרט יותר. ותשתדל מאוד לעשות דוגמה קלה לעצמך ולנו שמחיש את פעילות הקוד.
      יש שפע של עורכי קוד אינטרנטיים, תוכל לשתף אותנו עם המחשה חיה.

      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
      תגובה 1 תגובה אחרונה
      2
      • ש ש.ב.ח.

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

        אני לא כועס על js אני יודע שככה הטמבל הזה עובד, אני רק רוצה לדעת איך בכל זאת...
        אני יודע שיש asinc וכו' השאלה איפה בדיוק שמים את הawait אם בכלל...

        export function getAmountFromMonthlyDeposit(MonthlyDeposit, children, data, multi = true){
        
        
            if(!multi) children = [children];
            const groupByYears = _.groupBy(children, (i) => i.marriageAge - i.age);
            console.log(groupByYears)
            data = _.sortBy(data, i => i.amount).reverse();
            data = JSON.parse(JSON.stringify(data));
        
            let _return = false;
        
            data.map( a => {
        
                if(_return) return;
        
                a.innerPrograms.map( (b, bi) => {
                    if(_return) return;
                    console.log('iii')
                    let _amountMonthly = (a.amount / b.doublingRatio) / b.depositMonths;
                    a.innerPrograms.points =  _amountMonthly/10;
                    a.innerPrograms._amountMonthly = _amountMonthly;
                });
        
                let points = {};
                Object.keys(groupByYears).map((key ) => {
                    if(_return) return;
                    let program = getNearestAmount(a.innerPrograms, Number(key), 'yearsOfWaiting');
                    points[key] = {program: program, points: program.points * groupByYears[key].length, countChildren:groupByYears[key].length}
                });
        
                let amountPerPoint = MonthlyDeposit / _.sumBy(points, 'points');
        
                Object.keys(points).map( (p) => {
                    if(_return) return;
                    let totalPerChild =  (points[p].points / 2) * amountPerPoint;
                    if( totalPerChild >= points[p].program._amountMonthly){
                        _return = (totalPerChild * points[p].program.depositMonths) * points[p].program.doublingRatio;
                    }
                });
        
            });
        
            return _return;
        }
        
        yossizY מנותק
        yossizY מנותק
        yossiz
        כתב ב נערך לאחרונה על ידי
        #3

        @ש-ב-ח סתם הערה (בלי שקראתי את הקוד):
        הפעולה map מחזירה מערך אחר והיא נועדה לשם קבלת מערך חדש שנוצר מהמערך המקורי. לשם קריאות, אם אתה רוצה רק לעבור על המערך בלולאה ולעשות פעולות איתה, יותר טוב להשתמש ב-forEach.

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

        תגובה 1 תגובה אחרונה
        3
        • ש ש.ב.ח.

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

          אני לא כועס על js אני יודע שככה הטמבל הזה עובד, אני רק רוצה לדעת איך בכל זאת...
          אני יודע שיש asinc וכו' השאלה איפה בדיוק שמים את הawait אם בכלל...

          export function getAmountFromMonthlyDeposit(MonthlyDeposit, children, data, multi = true){
          
          
              if(!multi) children = [children];
              const groupByYears = _.groupBy(children, (i) => i.marriageAge - i.age);
              console.log(groupByYears)
              data = _.sortBy(data, i => i.amount).reverse();
              data = JSON.parse(JSON.stringify(data));
          
              let _return = false;
          
              data.map( a => {
          
                  if(_return) return;
          
                  a.innerPrograms.map( (b, bi) => {
                      if(_return) return;
                      console.log('iii')
                      let _amountMonthly = (a.amount / b.doublingRatio) / b.depositMonths;
                      a.innerPrograms.points =  _amountMonthly/10;
                      a.innerPrograms._amountMonthly = _amountMonthly;
                  });
          
                  let points = {};
                  Object.keys(groupByYears).map((key ) => {
                      if(_return) return;
                      let program = getNearestAmount(a.innerPrograms, Number(key), 'yearsOfWaiting');
                      points[key] = {program: program, points: program.points * groupByYears[key].length, countChildren:groupByYears[key].length}
                  });
          
                  let amountPerPoint = MonthlyDeposit / _.sumBy(points, 'points');
          
                  Object.keys(points).map( (p) => {
                      if(_return) return;
                      let totalPerChild =  (points[p].points / 2) * amountPerPoint;
                      if( totalPerChild >= points[p].program._amountMonthly){
                          _return = (totalPerChild * points[p].program.depositMonths) * points[p].program.doublingRatio;
                      }
                  });
          
              });
          
              return _return;
          }
          
          A מנותק
          A מנותק
          avr416
          כתב ב נערך לאחרונה על ידי avr416
          #4

          @ש-ב-ח כמה הערות:
          א.
          Js לא טמבל, ובכוונה הוא א-סינכרוני, כדי שהדפדפן לא יקפא כשהוא מחכה לתגובות מהשרת או מבצע פעולות לדיסק וכדו'.

          לשאלתך, פונקציה שמחזירה פרומיס, דהיינו שהיא א-סינכרונית, אפשר לכתוב בחתימה שלה async, ואז לקרוא לה עם await, כלומר תחכה עד שתחזור התשובה.
          (מאחורי הקלעים js ממיר את זה לpromise, ומאחורי זה בעצם הופך לcallback..
          כי זה בעצם רק צורת כתיבה שהיא יותר קריאה)

          ש תגובה 1 תגובה אחרונה
          0
          • A avr416

            @ש-ב-ח כמה הערות:
            א.
            Js לא טמבל, ובכוונה הוא א-סינכרוני, כדי שהדפדפן לא יקפא כשהוא מחכה לתגובות מהשרת או מבצע פעולות לדיסק וכדו'.

            לשאלתך, פונקציה שמחזירה פרומיס, דהיינו שהיא א-סינכרונית, אפשר לכתוב בחתימה שלה async, ואז לקרוא לה עם await, כלומר תחכה עד שתחזור התשובה.
            (מאחורי הקלעים js ממיר את זה לpromise, ומאחורי זה בעצם הופך לcallback..
            כי זה בעצם רק צורת כתיבה שהיא יותר קריאה)

            ש מנותק
            ש מנותק
            ש.ב.ח.
            כתב ב נערך לאחרונה על ידי ש.ב.ח.
            #5

            @avr416 אמר בהדרך הנכונה לביצוע קוד אסינכרוני:

            Js לא טמבל

            סליחה על הפגיעה בכבוד הרמטכל 🙂
            ב"ה הסתדרתי
            הפכתי כל map לfor וזה עובד
            כנראה שבכל זאת map לא ממתין לסיומו לפני return של הפונקציה
            גם בbreak point על הדפדפן ראיתי את תחילת הmap מיד אחרי זה את הreturn
            לא יודע מה ההסבר אבל זה מה שהיה
            אולי בהזדמנות אנסה לחקור זאת
            (וזה לא נכון לגבי כל map כי ניסיתי לעשות הדגמה קטנה (כמו ש@dovid הציע, וכנראה שהוא צדק שהקוד שלי הבעיתי אך בהחלט יש כאן גם בעיה בקוד שלי וגם בmap כי כאמור שיניתי את הmap לfor וזה עבד...)

            אהה @dovid, גם קצת ניקיתי את הקוד שיהיה יותר קריא 🙂

            dovidD תגובה 1 תגובה אחרונה
            -1
            • ש ש.ב.ח.

              @avr416 אמר בהדרך הנכונה לביצוע קוד אסינכרוני:

              Js לא טמבל

              סליחה על הפגיעה בכבוד הרמטכל 🙂
              ב"ה הסתדרתי
              הפכתי כל map לfor וזה עובד
              כנראה שבכל זאת map לא ממתין לסיומו לפני return של הפונקציה
              גם בbreak point על הדפדפן ראיתי את תחילת הmap מיד אחרי זה את הreturn
              לא יודע מה ההסבר אבל זה מה שהיה
              אולי בהזדמנות אנסה לחקור זאת
              (וזה לא נכון לגבי כל map כי ניסיתי לעשות הדגמה קטנה (כמו ש@dovid הציע, וכנראה שהוא צדק שהקוד שלי הבעיתי אך בהחלט יש כאן גם בעיה בקוד שלי וגם בmap כי כאמור שיניתי את הmap לfor וזה עבד...)

              אהה @dovid, גם קצת ניקיתי את הקוד שיהיה יותר קריא 🙂

              dovidD מנותק
              dovidD מנותק
              dovid
              ניהול
              כתב ב נערך לאחרונה על ידי
              #6

              @ש-ב-ח אמר בהדרך הנכונה לביצוע קוד אסינכרוני:

              כנראה שבכל זאת map לא ממתין לסיומו לפני return של הפונקציה

              שגוי.

              • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
              • בכל נושא אפשר ליצור קשר dovid@tchumim.com
              תגובה 1 תגובה אחרונה
              4
              תגובה
              • תגובה כנושא
              התחברו כדי לפרסם תגובה
              • מהישן לחדש
              • מהחדש לישן
              • הכי הרבה הצבעות


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

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

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