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

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

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

ASYNC/AWAIT

מתוזמן נעוץ נעול הועבר תוכנה
26 פוסטים 4 כותבים 564 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossizY yossiz

    @שרה-רחל תביאי דוגמת קוד בבקשה.

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

    @yossiz

    c
    
    const getAllMembers = async function() {
        let members = await membersRest.getAllMembers();
        let membersData = members.data;
    
        let membersArr = [];
        let mArr = [];
        let mov = [];
        membersData.forEach(z => {
            let newMember = {
                _id: z._id,
                Name: z.Name,
                Email: z.Email,
                City: z.City,
                Movies: mov
            }
            membersArr.push(newMember);
        })
        let ss = await subscriptionRest.getSubscriptions();
        let ssData = ss.data;
    
        if (ssData) {
            //   let result = await subscriptionBL.getAllSubscriptions();
            let result = await getSsForMembers(ssData, membersArr);
            console.log("result", result);
    
            if (result != "not found") {
                return result;
            } else {
                return membersArr;
            }
        } else {
            return membersArr;
        }
    
    }
    
    const getSsForMembers = async function(ss, mm) {
        let finalMmArr = {};
        Promise.all(ss.map(async x => {
            let found = mm.find(y => y._id == x.MemberID);
            if (found) {
                let memId = x.MemberID;
                let mem = await membersRest.getMember(memId);
                console.log("mem", memId);
    
                let memData = mem.data;
                memData.Movies = x.Movies
     let mArr = mm.filter(w => w._id != x.MemberID);
                mArr.push(memData);
                finalMmArr.data = mArr;
                console.log("finalMmArr", finalMmArr);
                return finalMmArr;
     else {
                return ("not found");
            }
        }))
    
    }
    
    yossizY תגובה 1 תגובה אחרונה
    0
    • ש שרה רחל

      @yossiz

      c
      
      const getAllMembers = async function() {
          let members = await membersRest.getAllMembers();
          let membersData = members.data;
      
          let membersArr = [];
          let mArr = [];
          let mov = [];
          membersData.forEach(z => {
              let newMember = {
                  _id: z._id,
                  Name: z.Name,
                  Email: z.Email,
                  City: z.City,
                  Movies: mov
              }
              membersArr.push(newMember);
          })
          let ss = await subscriptionRest.getSubscriptions();
          let ssData = ss.data;
      
          if (ssData) {
              //   let result = await subscriptionBL.getAllSubscriptions();
              let result = await getSsForMembers(ssData, membersArr);
              console.log("result", result);
      
              if (result != "not found") {
                  return result;
              } else {
                  return membersArr;
              }
          } else {
              return membersArr;
          }
      
      }
      
      const getSsForMembers = async function(ss, mm) {
          let finalMmArr = {};
          Promise.all(ss.map(async x => {
              let found = mm.find(y => y._id == x.MemberID);
              if (found) {
                  let memId = x.MemberID;
                  let mem = await membersRest.getMember(memId);
                  console.log("mem", memId);
      
                  let memData = mem.data;
                  memData.Movies = x.Movies
       let mArr = mm.filter(w => w._id != x.MemberID);
                  mArr.push(memData);
                  finalMmArr.data = mArr;
                  console.log("finalMmArr", finalMmArr);
                  return finalMmArr;
       else {
                  return ("not found");
              }
          }))
      
      }
      
      yossizY מנותק
      yossizY מנותק
      yossiz
      כתב ב נערך לאחרונה על ידי yossiz
      #5

      @שרה-רחל ומה השאלה? איפה הפונקציה ממשיכה לפני קבלת תשובה?

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

      מוטי אורןמ תגובה 1 תגובה אחרונה
      2
      • yossizY yossiz

        @שרה-רחל ומה השאלה? איפה הפונקציה ממשיכה לפני קבלת תשובה?

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

        @yossiz נראה לי היא מתתכוונת לקוד שנמצא בהערה (שורה 24). @שרה-רחל הוא לא אמור להיות עם await בכלל לפי מה שאני מבין פה.

        עריכה: נראה לי שטעיתי. על פניו כן צריך את ה await

        ש תגובה 1 תגובה אחרונה
        0
        • מוטי אורןמ מוטי אורן

          @yossiz נראה לי היא מתתכוונת לקוד שנמצא בהערה (שורה 24). @שרה-רחל הוא לא אמור להיות עם await בכלל לפי מה שאני מבין פה.

          עריכה: נראה לי שטעיתי. על פניו כן צריך את ה await

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

          @מוטי-אורן
          תקנתי את הקוד
          הRESULT מודפס לפני MEM

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

            @מוטי-אורן
            תקנתי את הקוד
            הRESULT מודפס לפני MEM

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

            @שרה-רחל
            הMEMBER מובא ע"י REST API

            yossizY תגובה 1 תגובה אחרונה
            0
            • ש שרה רחל

              @שרה-רחל
              הMEMBER מובא ע"י REST API

              yossizY מנותק
              yossizY מנותק
              yossiz
              כתב ב נערך לאחרונה על ידי
              #9

              @שרה-רחל צריך להוסיף await או return לפני promise.all

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

              ש תגובה 1 תגובה אחרונה
              4
              • yossizY yossiz

                @שרה-רחל צריך להוסיף await או return לפני promise.all

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

                @yossiz
                נכון זה עזר
                האמת שהPROMISE.ALL
                כבר היה חלק מהפתרון
                מה הוא בעצם פותר ?
                הוא לא אמור לבוא כשיש כמה קריאות אסיכרוניות?
                בפונקציה זו יש קריאה אחת בתוך הסוגריים של PROMISE.ALL
                אז איך זה פתר את הבעיה?

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

                  @שרה-רחל יש בקוד בעיה נוספת, הפונקציהבPromise.all נקראת עבור כל אחד מהפריטים ברשימה, ומחזירה עבור כל אחד או not-found או אובייקט משותף לכלל האיברים.
                  הפונקציה הקוראת בודקת אם הערך הוא not-found אבל הוא לעולם לא יהיה not-found כי התוצאה של Promise.all היא תמיד מערך של תוצאות (בכל תוצאה יכול להיות not-found).
                  בקיצור הפונקציה getSsForMembers צריכה כתיבה מחדש, אשמח לעזור אם אדע בגדול מה היא מנסה לעשות.

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

                    @yossiz
                    נכון זה עזר
                    האמת שהPROMISE.ALL
                    כבר היה חלק מהפתרון
                    מה הוא בעצם פותר ?
                    הוא לא אמור לבוא כשיש כמה קריאות אסיכרוניות?
                    בפונקציה זו יש קריאה אחת בתוך הסוגריים של PROMISE.ALL
                    אז איך זה פתר את הבעיה?

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

                    @שרה-רחל הפונקציה Promise.all מטפלת במקרה שיש הרבה await לעשות ואת רוצה לחכות שכולם יתבצעו ולקבל את התוצאות כמערך.

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

                      @שרה-רחל הפונקציה Promise.all מטפלת במקרה שיש הרבה await לעשות ואת רוצה לחכות שכולם יתבצעו ולקבל את התוצאות כמערך.

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

                      @dovid
                      אז איך במקרה זה מתאימה הפונקציה
                      יש כאן רק קריאה אחת של AWAIT

                      dovidD תגובה 1 תגובה אחרונה
                      0
                      • ש שרה רחל

                        @dovid
                        אז איך במקרה זה מתאימה הפונקציה
                        יש כאן רק קריאה אחת של AWAIT

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

                        @שרה-רחל ss.map הופך את מערך הss למערך של פונקציות await, כל אחת מהסוג שכתובה בסוגריים... כלומר הטיפול של הפונקציה יתבצע מול כל פריט בעוד הוא נכתב כנראה במקור לטיפול בכלל המערך ביחד. אשמח לדעת מה הפונקציה עושה, נראה שהיא מאחדת בין שני רשימות שונות, ובנוסף מבקשת מהשרת השלמת מידע.

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

                          @שרה-רחל יש בקוד בעיה נוספת, הפונקציהבPromise.all נקראת עבור כל אחד מהפריטים ברשימה, ומחזירה עבור כל אחד או not-found או אובייקט משותף לכלל האיברים.
                          הפונקציה הקוראת בודקת אם הערך הוא not-found אבל הוא לעולם לא יהיה not-found כי התוצאה של Promise.all היא תמיד מערך של תוצאות (בכל תוצאה יכול להיות not-found).
                          בקיצור הפונקציה getSsForMembers צריכה כתיבה מחדש, אשמח לעזור אם אדע בגדול מה היא מנסה לעשות.

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

                          @dovid
                          MEMBER:

                          Name: String,
                          Email: String,
                          City: String
                          

                          Subscriptions

                          MemberId: String,
                          Movies: [String]
                          

                          הפונקציה getAllMembers
                          מציגה את כל הלקוחות אבל אמורה לבדוק אם יש להם מנוי לסרטונים
                          לכן היא מטעינה את כל המנויים ועבור כל מנוי שולחים לפונקציה השניה getSsForMembers
                          שם בודקת אם יש למנוי _ID שמתאים לאאחד מה MemberId של המנויים
                          ומחזירה את המערך של כל המנויים .
                          קוראים לפונקציה getAllMembers פעם אחת

                          dovidD תגובה 1 תגובה אחרונה
                          0
                          • ש שרה רחל

                            @dovid
                            MEMBER:

                            Name: String,
                            Email: String,
                            City: String
                            

                            Subscriptions

                            MemberId: String,
                            Movies: [String]
                            

                            הפונקציה getAllMembers
                            מציגה את כל הלקוחות אבל אמורה לבדוק אם יש להם מנוי לסרטונים
                            לכן היא מטעינה את כל המנויים ועבור כל מנוי שולחים לפונקציה השניה getSsForMembers
                            שם בודקת אם יש למנוי _ID שמתאים לאאחד מה MemberId של המנויים
                            ומחזירה את המערך של כל המנויים .
                            קוראים לפונקציה getAllMembers פעם אחת

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

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

                            const getAllMembers = async function () {
                                let members = await membersRest.getAllMembers();
                            
                                let membersArr = members.data.map(z => {
                                    return {
                                        _id: z._id,
                                        Name: z.Name,
                                        Email: z.Email,
                                        City: z.City,
                                        Movies: []
                                    }
                                });
                            
                                let ss = await subscriptionRest.getSubscriptions();
                                let ssData = ss.data;
                            
                                for (const sub of ss.data) {
                                    var memberFind = membersArr.find(x => x._id == sub.MemberID);
                                    if (memberFind)
                                        memberFind.Movies = sub.Movies;
                                    else
                                        console.log(`the member ${sub.MemberID} not found in the members list, but have subscrition!`)
                                }
                            
                                return membersArr;
                            }
                            
                            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                            dovidD תגובה 1 תגובה אחרונה
                            1
                            • dovidD dovid

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

                              const getAllMembers = async function () {
                                  let members = await membersRest.getAllMembers();
                              
                                  let membersArr = members.data.map(z => {
                                      return {
                                          _id: z._id,
                                          Name: z.Name,
                                          Email: z.Email,
                                          City: z.City,
                                          Movies: []
                                      }
                                  });
                              
                                  let ss = await subscriptionRest.getSubscriptions();
                                  let ssData = ss.data;
                              
                                  for (const sub of ss.data) {
                                      var memberFind = membersArr.find(x => x._id == sub.MemberID);
                                      if (memberFind)
                                          memberFind.Movies = sub.Movies;
                                      else
                                          console.log(`the member ${sub.MemberID} not found in the members list, but have subscrition!`)
                                  }
                              
                                  return membersArr;
                              }
                              
                              dovidD מנותק
                              dovidD מנותק
                              dovid
                              ניהול
                              כתב ב נערך לאחרונה על ידי
                              #17

                              @dovid גם הקוד הזה ארוך מידי, כי אני שם לב שהMap הראשון לא עושה כלום, הקוד הזה שקול:

                              const getAllMembers = async function () {
                                  let membersArr = await membersRest.getAllMembers();
                              
                                  let ss = await subscriptionRest.getSubscriptions();
                                  let ssData = ss.data;
                              
                                  for (const sub of ss.data) {
                                      var memberFind = membersArr.find(x => x._id == sub.MemberID);
                                      if (memberFind)
                                          memberFind.Movies = sub.Movies;
                                      else
                                          console.log(`the member ${sub.MemberID} not found in the members list, but have subscrition!`)
                                  }
                              
                                  return membersArr;
                              }
                              
                              • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                              • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                              ש dovidD 2 תגובות תגובה אחרונה
                              1
                              • dovidD dovid

                                @dovid גם הקוד הזה ארוך מידי, כי אני שם לב שהMap הראשון לא עושה כלום, הקוד הזה שקול:

                                const getAllMembers = async function () {
                                    let membersArr = await membersRest.getAllMembers();
                                
                                    let ss = await subscriptionRest.getSubscriptions();
                                    let ssData = ss.data;
                                
                                    for (const sub of ss.data) {
                                        var memberFind = membersArr.find(x => x._id == sub.MemberID);
                                        if (memberFind)
                                            memberFind.Movies = sub.Movies;
                                        else
                                            console.log(`the member ${sub.MemberID} not found in the members list, but have subscrition!`)
                                    }
                                
                                    return membersArr;
                                }
                                
                                ש מנותק
                                ש מנותק
                                שרה רחל
                                כתב ב נערך לאחרונה על ידי
                                #18

                                @dovid
                                נראה נכון
                                אני כבר בודקת
                                רק מענין אותי למה בקוד הראשוני ששמתי (תקנתיקצת)
                                הfinalMmArr מדפיס תוכן
                                בזמן שהRESULT מדפיס אחרי כן UNDEFINDED

                                dovidD תגובה 1 תגובה אחרונה
                                0
                                • dovidD dovid

                                  @dovid גם הקוד הזה ארוך מידי, כי אני שם לב שהMap הראשון לא עושה כלום, הקוד הזה שקול:

                                  const getAllMembers = async function () {
                                      let membersArr = await membersRest.getAllMembers();
                                  
                                      let ss = await subscriptionRest.getSubscriptions();
                                      let ssData = ss.data;
                                  
                                      for (const sub of ss.data) {
                                          var memberFind = membersArr.find(x => x._id == sub.MemberID);
                                          if (memberFind)
                                              memberFind.Movies = sub.Movies;
                                          else
                                              console.log(`the member ${sub.MemberID} not found in the members list, but have subscrition!`)
                                      }
                                  
                                      return membersArr;
                                  }
                                  
                                  dovidD מנותק
                                  dovidD מנותק
                                  dovid
                                  ניהול
                                  כתב ב נערך לאחרונה על ידי
                                  #19

                                  חיסרתי את העיקר לכאורה שזה הawait membersRest.getMember(memId); אבל עשיתי זאת במודע, כי אני לא מבין מה הוא מביא (מה היה קודם ומה הוא מחליף/מוסיף).

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

                                    @dovid
                                    נראה נכון
                                    אני כבר בודקת
                                    רק מענין אותי למה בקוד הראשוני ששמתי (תקנתיקצת)
                                    הfinalMmArr מדפיס תוכן
                                    בזמן שהRESULT מדפיס אחרי כן UNDEFINDED

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

                                    @שרה-רחל אמר בASYNC/AWAIT:

                                    @dovid
                                    נראה נכון
                                    אני כבר בודקת
                                    רק מענין אותי למה בקוד הראשוני ששמתי (תקנתיקצת)
                                    הfinalMmArr מדפיס תוכן
                                    בזמן שהRESULT מדפיס אחרי כן UNDEFINDED

                                    לפני התיקון של @yossiz (לשים return או await) זה לא הגיוני שהוא הדפיס not-found.
                                    אחרי התיקון, הוא היה אמור להדפיס את זה אבל בתוך מערך [.... .... "not-found"]

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

                                      @שרה-רחל אמר בASYNC/AWAIT:

                                      @dovid
                                      נראה נכון
                                      אני כבר בודקת
                                      רק מענין אותי למה בקוד הראשוני ששמתי (תקנתיקצת)
                                      הfinalMmArr מדפיס תוכן
                                      בזמן שהRESULT מדפיס אחרי כן UNDEFINDED

                                      לפני התיקון של @yossiz (לשים return או await) זה לא הגיוני שהוא הדפיס not-found.
                                      אחרי התיקון, הוא היה אמור להדפיס את זה אבל בתוך מערך [.... .... "not-found"]

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

                                      @dovid
                                      לפני הGETMEMBER
                                      יש רק את הID שלו
                                      ואני רוצה ליצור JSON שמכיל גם את הפרטים שלו

                                      dovidD תגובה 1 תגובה אחרונה
                                      0
                                      • ש שרה רחל

                                        @dovid
                                        לפני הGETMEMBER
                                        יש רק את הID שלו
                                        ואני רוצה ליצור JSON שמכיל גם את הפרטים שלו

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

                                        @שרה-רחל לא היה לפני כן City וכל זה? ורק למי שיש הרשמה לMovie צריך את הפרטים או לכולם?
                                        לא עדיף שהשרת בgetAllMembers ייתן פרטים מלאים?

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

                                          @שרה-רחל לא היה לפני כן City וכל זה? ורק למי שיש הרשמה לMovie צריך את הפרטים או לכולם?
                                          לא עדיף שהשרת בgetAllMembers ייתן פרטים מלאים?

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

                                          @dovid
                                          זה הדרישה של הפרויקט

                                          dovidD תגובה 1 תגובה אחרונה
                                          0
                                          תגובה
                                          • תגובה כנושא
                                          התחברו כדי לפרסם תגובה
                                          • מהישן לחדש
                                          • מהחדש לישן
                                          • הכי הרבה הצבעות


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

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

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