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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
8 פוסטים 3 כותבים 219 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • אבי 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
    • yossizY מנותק
      yossizY מנותק
      yossiz
      השיב לאבי 203 ב נערך לאחרונה על ידי 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
      • אבי 203א מנותק
        אבי 203א מנותק
        אבי 203
        השיב לyossiz ב נערך לאחרונה על ידי אבי 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
        • A מנותק
          A מנותק
          avr416
          השיב לאבי 203 ב נערך לאחרונה על ידי
          #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 מנותק
            A מנותק
            avr416
            השיב ל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
            • אבי 203א מנותק
              אבי 203א מנותק
              אבי 203
              השיב לavr416 ב נערך לאחרונה על ידי
              #6

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

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

              A תגובה 1 תגובה אחרונה
              0
              • A מנותק
                A מנותק
                avr416
                השיב לאבי 203 ב נערך לאחרונה על ידי
                #7

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

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

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

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

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

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

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

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

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