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

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

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

JS תגובה אסינכרונית

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

    מה הדרך העדכנית ביותר והנוחה ביותר (ביחד או לחוד),
    לכתוב פונקציה שמחזירה מידע החוזר לאחר זמן לא ידוע (נניח תגובת שרת)? סביבת JS.
    תודה וקיץ בריא

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

      תשובה בודדת - Promise (זה מובנה בשפה, להמשך עיון), ניתן באמצעות callback (היינו פונקציה שתטפל במידע) שמעבירים לthen, וניתן באמצעות הסינטקס של async\await (שזה לא שימושי בכל המקרים, אבל בהחלט נוח)

      אתה יכול לטפל בכמה תגובות באמצעות Observables מספריית RxJS

      תגובה 1 תגובה אחרונה
      3
      • yyyY מנותק
        yyyY מנותק
        yyy
        כתב ב נערך לאחרונה על ידי
        #3

        מתקשה לממש את -Promise. ממה שהבנתי Promise מקבל בקונסטרקטור 2 פרמטרים: resolve מופעל במקרה של הצלחה, reject במקרה של כישלון.

        כעת הנה הקוד שכתבתי בסביבת אנגולר:
        אני מנסה ליצור Promise שעד 10 שניות תוחזר שגיאה ומ-10 ומעלה זו תהיה הצלחה.

          errorMessege: string = "Promise error !";
          myPromise = new Promise((resolve, reject) => {
            // Perform some async operation
        
            setTimeout(() => {
              const data = this.errorMessege;
              reject(data);
            }, 0);
            setTimeout(() => {
              const data = this.successMessege;
              resolve(data);
            }, 10000);
        
          });
        
          consumePromise() {
            this.myPromise.then((data) => {
              console.log(data);
            }).catch((error) => {
              console.error(error);
            });
          }
        

        זה הכפתור שמנסה לצרוך את Promise

        <button (click)=consumePromise()>consume</button>
        

        מה שקורה בפועל זה:
        א. מיד שאני טוען את הדף מופיע לי שגיאה של ה-Promise בקונסול
        ב. לא משנה מתי אני לוחץ על הכפתור תמיד הוא יתן שגיאה.

        אשמח להסבר, תודה רבה.

        W yossizY dovidD 3 תגובות תגובה אחרונה
        0
        • W מנותק
          W מנותק
          WEB
          השיב לyyy ב נערך לאחרונה על ידי
          #4
          פוסט זה נמחק!
          תגובה 1 תגובה אחרונה
          0
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לyyy ב נערך לאחרונה על ידי
            #5

            @yyy הפונקציה שאתה מעביר ל-new Promise מתחילה לרוץ מיד
            תעשה שרק בלחיצה על הכפתור תיצור את ה-promise

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

            תגובה 1 תגובה אחרונה
            0
            • dovidD מחובר
              dovidD מחובר
              dovid ניהול
              השיב לyyy ב נערך לאחרונה על ידי dovid
              #6

              @yyy כתב בJS תגובה אסינכרונית:

              אני מנסה ליצור Promise שעד 10 שניות תוחזר שגיאה ומ-10 ומעלה זו תהיה הצלחה.

              מהמילים האלה נראה חוסר הבנה לגבי פרומייס.

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

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

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

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

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