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

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

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

סדר תהליכים ב java script

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

    באג שקורה לי לפעמים כן לפעמים לא.
    אני מריץ שתי לולאות for ורוצה שאח"כ את התוצאה שלהם יעדכן במסד נתונים tormim אני מעכב את זה עד להשלמה לפעמים זה שומר לפעמים לא. כלומר לפעמים בכלל זה לא מגיב מדלג על זה. לא מעדכן כלום. איפה אני טועה. אולי איזה תקלה עוצרת את זה מלהגיע לשם?

    let card= []
    	let ms;
    	if (truma.hafaka === "מערכת") {
    for (var i = 0; i < truma.amount ; i++) {
    		let  results   = await wixData.query("card").eq("sug", "הגרלה").ascending("ms").isEmpty("torem").limit(1).find()
            let item = results.items[0];
                    console.log(item);
            item.torem = truma._id; // updated last name
          await  wixData.update("card", item);
          console.log(ms);
          if (ms===undefined) {
             ms = await item.ms 
    
          }else{
    ms = await ms + "," + item.ms 
    }
    
        await  card.push(item._id)
    console.log(results);
          await wixData.insertReference("tormim", "card", truma._id, results.items[0]._id)  .then( () => {
        console.log("Reference inserted");
      } )
      .catch( (error) => {
        console.log(error);
      } );
     }
           for (var ii = 0; ii < (Math.floor( truma.amount/2)) ; ii++) {
    	let  results2   = await wixData.query("card").eq("sug", "בונוס").ascending("ms").isEmpty("torem").limit(1).find()
          
            let item2 = results2.items[0];
            console.log(item2);
    
            item2.torem =  truma._id
          await  wixData.update("card", item2);
    ms = await ms + "," + item2.ms 
        await card.push(item2._id)
         await wixData.insertReference("tormim", "card", truma._id, results2.items[0]._id)  .then( () => {
        console.log("Reference inserted");
      } )
      .catch( (error) => {
        console.log(error);
      } );
     }
    console.log(ms);
    
      await wixData.get("tormim", truma._id)
    				.then((item) => {
    item.ishur=  true
    item.status = "מאושר"
    item.card1=  ms
    			wixData.update("tormim", item)
    			} )
      .catch( (err) => {
        let errorMsg = err;
      } );
      return ms
    
     }
    

    https://www.av-digital.co.il/

    yossizY תגובה 1 תגובה אחרונה
    0
    • אבי 203א אבי 203

      באג שקורה לי לפעמים כן לפעמים לא.
      אני מריץ שתי לולאות for ורוצה שאח"כ את התוצאה שלהם יעדכן במסד נתונים tormim אני מעכב את זה עד להשלמה לפעמים זה שומר לפעמים לא. כלומר לפעמים בכלל זה לא מגיב מדלג על זה. לא מעדכן כלום. איפה אני טועה. אולי איזה תקלה עוצרת את זה מלהגיע לשם?

      let card= []
      	let ms;
      	if (truma.hafaka === "מערכת") {
      for (var i = 0; i < truma.amount ; i++) {
      		let  results   = await wixData.query("card").eq("sug", "הגרלה").ascending("ms").isEmpty("torem").limit(1).find()
              let item = results.items[0];
                      console.log(item);
              item.torem = truma._id; // updated last name
            await  wixData.update("card", item);
            console.log(ms);
            if (ms===undefined) {
               ms = await item.ms 
      
            }else{
      ms = await ms + "," + item.ms 
      }
      
          await  card.push(item._id)
      console.log(results);
            await wixData.insertReference("tormim", "card", truma._id, results.items[0]._id)  .then( () => {
          console.log("Reference inserted");
        } )
        .catch( (error) => {
          console.log(error);
        } );
       }
             for (var ii = 0; ii < (Math.floor( truma.amount/2)) ; ii++) {
      	let  results2   = await wixData.query("card").eq("sug", "בונוס").ascending("ms").isEmpty("torem").limit(1).find()
            
              let item2 = results2.items[0];
              console.log(item2);
      
              item2.torem =  truma._id
            await  wixData.update("card", item2);
      ms = await ms + "," + item2.ms 
          await card.push(item2._id)
           await wixData.insertReference("tormim", "card", truma._id, results2.items[0]._id)  .then( () => {
          console.log("Reference inserted");
        } )
        .catch( (error) => {
          console.log(error);
        } );
       }
      console.log(ms);
      
        await wixData.get("tormim", truma._id)
      				.then((item) => {
      item.ishur=  true
      item.status = "מאושר"
      item.card1=  ms
      			wixData.update("tormim", item)
      			} )
        .catch( (err) => {
          let errorMsg = err;
        } );
        return ms
      
       }
      
      yossizY מנותק
      yossizY מנותק
      yossiz
      כתב ב נערך לאחרונה על ידי yossiz
      #2

      @אבי-203 אני לא מבין מה אתה מנסה לעשות בקוד שלך (אתה לא משתמש כלל במשתנה i בתוך הקוד, זה בכוונה? משהו נראה מוזר שם).

      אבל הכלל הגדול הוא:
      שימוש ב-await נצרך/שימושי/משפיע אך ורק כאשר הוא מוחל על promise.
      התוצאה של await 1 + 1 הוא שווה בדיוק ל-1 + 1 בלי await.

      לכן:

      await card.push
      

      מיותר להשתמש שם ב-await מכיון שפונקציית push לא מחזירה promise.
      אני מניח שגם פה:

      ms = await item.ms
      

      ה-await מיותר כי מן הסתם המשתנה ms הוא לא promise.

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

      אבי 203א תגובה 1 תגובה אחרונה
      1
      • yossizY yossiz

        @אבי-203 אני לא מבין מה אתה מנסה לעשות בקוד שלך (אתה לא משתמש כלל במשתנה i בתוך הקוד, זה בכוונה? משהו נראה מוזר שם).

        אבל הכלל הגדול הוא:
        שימוש ב-await נצרך/שימושי/משפיע אך ורק כאשר הוא מוחל על promise.
        התוצאה של await 1 + 1 הוא שווה בדיוק ל-1 + 1 בלי await.

        לכן:

        await card.push
        

        מיותר להשתמש שם ב-await מכיון שפונקציית push לא מחזירה promise.
        אני מניח שגם פה:

        ms = await item.ms
        

        ה-await מיותר כי מן הסתם המשתנה ms הוא לא promise.

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

        @yossiz מקווה שהבנתי כעת את ההגיון של זה.
        אני רוצה שהלולאות יבנו את הערך של הפרמטר ms ורק לאחר שהוא נבנה ירוץ פעולת העדכון.
        זה עובד לי טוב מה שכתבתי. אבל לפעמים זה רץ קודם, לא מצליח למצוא את הסיבה.
        אני יודע שיש דבר כזה
        Promise.all([
        אבל כנראה אני לא יודע להשתמש בזה.

        
          await wixData.get("tormim", truma._id)
        				.then((item) => {
        item.ishur=  true
        item.status = "מאושר"
        item.card1=  ms
        			wixData.update("tormim", item)
        			} )
          .catch( (err) => {
            let errorMsg = err;
          } );
        

        https://www.av-digital.co.il/

        A תגובה 1 תגובה אחרונה
        0
        • אבי 203א אבי 203

          @yossiz מקווה שהבנתי כעת את ההגיון של זה.
          אני רוצה שהלולאות יבנו את הערך של הפרמטר ms ורק לאחר שהוא נבנה ירוץ פעולת העדכון.
          זה עובד לי טוב מה שכתבתי. אבל לפעמים זה רץ קודם, לא מצליח למצוא את הסיבה.
          אני יודע שיש דבר כזה
          Promise.all([
          אבל כנראה אני לא יודע להשתמש בזה.

          
            await wixData.get("tormim", truma._id)
          				.then((item) => {
          item.ishur=  true
          item.status = "מאושר"
          item.card1=  ms
          			wixData.update("tormim", item)
          			} )
            .catch( (err) => {
              let errorMsg = err;
            } );
          
          A מנותק
          A מנותק
          avr416
          כתב ב נערך לאחרונה על ידי
          #4

          @אבי-203 השימוש בasync / await בא במקום השימוש בפונקציה then().

          לכן את הקוד שלך אתה צריך לכתוב כך:

          await wixData.get("tormim", truma._id);
          // עכשיו הוא לא יריץ את הקוד הבא, עד שהפונקציה get תסיים
          // כיון שאתה לא שומר את הערך שחוזר במשתנה, אתה צריך לכתוב ככה:
           const item= await wixData.get("tormim", truma._id);
          // עכשיו המשתנה item 
          // יכיל את מה שרצית.
          
          item.ishur=  true
          item.status = "מאושר"
          item.card1=  ms
          // גם בשורה הבאה אתה צריך להוסיף לו await
           await wixData.update("tormim", item)
          
          
          A תגובה 1 תגובה אחרונה
          0
          • A avr416

            @אבי-203 השימוש בasync / await בא במקום השימוש בפונקציה then().

            לכן את הקוד שלך אתה צריך לכתוב כך:

            await wixData.get("tormim", truma._id);
            // עכשיו הוא לא יריץ את הקוד הבא, עד שהפונקציה get תסיים
            // כיון שאתה לא שומר את הערך שחוזר במשתנה, אתה צריך לכתוב ככה:
             const item= await wixData.get("tormim", truma._id);
            // עכשיו המשתנה item 
            // יכיל את מה שרצית.
            
            item.ishur=  true
            item.status = "מאושר"
            item.card1=  ms
            // גם בשורה הבאה אתה צריך להוסיף לו await
             await wixData.update("tormim", item)
            
            
            A מנותק
            A מנותק
            avr416
            כתב ב נערך לאחרונה על ידי
            #5

            לפני השימוש ב async / await היו משתמשים בpromise עם then (עדיין אפשר להשתמש בזה, אבל זה לא הולך ביחד..
            כשרוצים להשתמש ב then צריך לכתוב ככה:

            wixData.get("tormim", truma._id)
              .then(item => {
                  item.ishur=  true
                  item.status = "מאושר"
                  item.card1=  ms
            
                  return wixData.update("tormim", item)
              })
              .then(res => {
                  console.log(res)
              })
              .catch(err => console.log(err))
            

            מקווה שזה קצת יעשה לך סדר בדברים האלה

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

              לפני השימוש ב async / await היו משתמשים בpromise עם then (עדיין אפשר להשתמש בזה, אבל זה לא הולך ביחד..
              כשרוצים להשתמש ב then צריך לכתוב ככה:

              wixData.get("tormim", truma._id)
                .then(item => {
                    item.ishur=  true
                    item.status = "מאושר"
                    item.card1=  ms
              
                    return wixData.update("tormim", item)
                })
                .then(res => {
                    console.log(res)
                })
                .catch(err => console.log(err))
              

              מקווה שזה קצת יעשה לך סדר בדברים האלה

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

              @avr416 אני שם את זה בשביל שלא יתחיל לפני פונקציות אחרות שבראשית הקוד.
              אם אני יסתמך על ה then זה יעכב רק מה שאחרי את ה update אבל ה get יתחיל לפני הפונקציות שלפני.

              https://www.av-digital.co.il/

              A תגובה 1 תגובה אחרונה
              0
              • אבי 203א אבי 203

                @avr416 אני שם את זה בשביל שלא יתחיל לפני פונקציות אחרות שבראשית הקוד.
                אם אני יסתמך על ה then זה יעכב רק מה שאחרי את ה update אבל ה get יתחיל לפני הפונקציות שלפני.

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

                @אבי-203 לא הבנתי.
                JS מריץ את הפונקציות לפי הסדר שכתבת, אא"כ כתבת לא נכון..
                אין סיבה שהפונקציה של הget תרוץ לפני הפונקציות שכתבת לפניה.

                תשתף את הקוד..

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

                  @אבי-203 לא הבנתי.
                  JS מריץ את הפונקציות לפי הסדר שכתבת, אא"כ כתבת לא נכון..
                  אין סיבה שהפונקציה של הget תרוץ לפני הפונקציות שכתבת לפניה.

                  תשתף את הקוד..

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

                  @avr416 שמתי בתחילת הפוסט זה הקוד.למעלה.

                  https://www.av-digital.co.il/

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


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

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

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