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

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

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

איך עובד קוד אסינכרוני בJS?

מתוזמן נעוץ נעול הועבר תכנות
35 פוסטים 5 כותבים 933 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • nigunN מנותק
    nigunN מנותק
    nigun
    השיב לyossiz ב נערך לאחרונה על ידי
    #21

    @yossiz
    מה הבעיה לעצור את הthread?
    ומה בעצם הפתרון?
    (אני כנראה עדיין חושב בראש של גו
    ששם עוצרים את הthread עד לקבלת תוצאה)

    מייל: nigun@duck.com

    yossizY א 2 תגובות תגובה אחרונה
    0
    • yossizY מנותק
      yossizY מנותק
      yossiz
      השיב לnigun ב נערך לאחרונה על ידי
      #22

      @nigun אמר באיך עובד קוד אסינכרוני בJS?:

      מה הבעיה לעצור את הthread?

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

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

      nigunN תגובה 1 תגובה אחרונה
      2
      • nigunN מנותק
        nigunN מנותק
        nigun
        השיב לyossiz ב נערך לאחרונה על ידי
        #23

        @yossiz
        בסדר
        אז מה הפתרון?

        מייל: nigun@duck.com

        א yossizY 2 תגובות תגובה אחרונה
        0
        • א מנותק
          א מנותק
          אהרן
          השיב לnigun ב נערך לאחרונה על ידי
          #24

          @nigun אמר באיך עובד קוד אסינכרוני בJS?:

          ששם עוצרים את הthread עד לקבלת תוצאה)

          בטוח?
          ואם אני מפעיל לולאה 800 שמריצה בכל פעם פונקציה עם go
          היא אוספת thread מכל העיר?

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

          nigunN תגובה 1 תגובה אחרונה
          0
          • א מנותק
            א מנותק
            אהרן
            השיב לnigun ב נערך לאחרונה על ידי
            #25

            @nigun אמר באיך עובד קוד אסינכרוני בJS?:

            אז מה הפתרון?

            לקרוא שוב ועכשיו להבין את התשובה 🙂 .

            תגובה 1 תגובה אחרונה
            1
            • yossizY מנותק
              yossizY מנותק
              yossiz
              השיב לnigun ב נערך לאחרונה על ידי yossiz
              #26

              @nigun אמר באיך עובד קוד אסינכרוני בJS?:

              אז מה הפתרון?

              callback.
              מה זה? נסביר,
              אבל לפני כן שווה להכיר את ה-event loop של JS (למרות שדוד טען שזה לא הכרחי...)
              ה-thread הראשי של JS אוחז בלולאה אחת גדולה כל משך חיותו. הלולאה הזאת מריץ חתיכות קוד, כשהוא מגיע לסוף הקטע הוא בודק את התור של משימות אם יש עוד משימות. אם יש הוא מריץ אותם ושוב חוזר לבדוק אם יש עוד משימות. ה-thread נמצא במצב idle רק כאשר אין עוד משימות.
              כאשר אתה מריץ בקשת http למשל, אז לחכות עד שזה יסתיים אסור כי זה יתקע את ה-thread, אז מה אתה עושה? אתה אומר ל-runtime "תריץ בשבילי את הבקשה הזאת, וכאשר הוא יסתיים תריץ את הפונקציה הזאת - ה-callback עם התשובה של הבקשה כארגומנט".
              עכשיו ה-runtime לוקח את הבקשה ואת ה-callback, שולח את הבקשה ומסמן לעצמו משימה חדשה לבדוק בכל איטרציה של הלולאה אם הבקשה הסתיימה. אם לא, נעבור למשימה הבאה, אם כן, נריץ את פונקציית ה-callback.

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

              nigunN תגובה 1 תגובה אחרונה
              2
              • nigunN מנותק
                nigunN מנותק
                nigun
                השיב לאהרן ב נערך לאחרונה על ידי
                #27

                @אהרן אמר באיך עובד קוד אסינכרוני בJS?:

                @nigun אמר באיך עובד קוד אסינכרוני בJS?:

                ששם עוצרים את הthread עד לקבלת תוצאה)

                בטוח?

                ואם אני מפעיל לולאה 800 שמריצה בכל פעם פונקציה עם go
                היא אוספת thread מכל העיר?

                למטב ידעתי, כן.

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

                לא הבנתי את הדימוי
                ומה הבעיה בזה?
                כשאתה מפעיל הרבה בקשות לmysql ואתה פותח את htop, כמה thread-ים את הרואה שם?

                מייל: nigun@duck.com

                א תגובה 1 תגובה אחרונה
                0
                • א מנותק
                  א מנותק
                  אהרן
                  השיב לnigun ב נערך לאחרונה על ידי
                  #28

                  @nigun אמר באיך עובד קוד אסינכרוני בJS?:

                  למטב ידעתי, כן.

                  המחשב שלי (מסוג XT עם כפתור TURBO..) עדיין יודע להשתמש רק בליבות שיש אצלו, ויש לו רק 8.

                  שלך יודע לקחת גם את השכן?

                  ומה הבעיה בזה?
                  שבמקום להשתמש במכונה פנויה, אתה שם אותה בצד ומחפש נוספת.

                  nigunN תגובה 1 תגובה אחרונה
                  1
                  • nigunN מנותק
                    nigunN מנותק
                    nigun
                    השיב לyossiz ב נערך לאחרונה על ידי
                    #29

                    @yossiz
                    חבל שאתה לא כותב מדריכים מסודרים
                    המדריכים (לפחות בעברית) ברשת אומרים תעשה X וסע
                    וזה קצת מעצבן אותי (בעיקר כי זה משעמם כמו שכתבתי לעיל).

                    לעניינו נראה לי שהבנתי
                    עכשיו איך נכנס כאן פרומיס והחברים?

                    מייל: nigun@duck.com

                    א תגובה 1 תגובה אחרונה
                    1
                    • nigunN מנותק
                      nigunN מנותק
                      nigun
                      השיב לאהרן ב נערך לאחרונה על ידי nigun
                      #30

                      @אהרן
                      אין לי מושג
                      את זה צריך לשאול את @yossiz ?
                      אני יודע שבמנהל משימות שלי יש הרבה יותר מ8 תהליכים.

                      עריכה: אני לא בטוח שgoroutine זה בדיוק כמו thread
                      יתכן מאוד שאני טועה

                      מייל: nigun@duck.com

                      א תגובה 1 תגובה אחרונה
                      0
                      • א מנותק
                        א מנותק
                        אהרן
                        השיב לnigun ב נערך לאחרונה על ידי
                        #31

                        @nigun
                        אתה מציג א"ז כמגבלה, ונותן לנו להתנצל בשם JS.

                        תסביר לנו אתה מה היתרון
                        מה נותן לך שכפול thread,
                        איך זה מאפשר לך לקבל את התשובה בתהליך הראשי בכלל, ואיך התהליך הראשי יודע שכל האיטרציות סיימו?

                        nigunN A 2 תגובות תגובה אחרונה
                        0
                        • א מנותק
                          א מנותק
                          אהרן
                          השיב לnigun ב נערך לאחרונה על ידי
                          #32

                          @nigun אמר באיך עובד קוד אסינכרוני בJS?:

                          חבל שאתה לא כותב מדריכים מסודרים
                          המדריכים (לפחות בעברית) ברשת אומרים תעשה X וסע
                          וזה קצת מעצבן אותי (בעיקר כי זה משעמם כמו שכתבתי לעיל).

                          אתה יודע להסביר על מאחורי התהליכים ב-GO?
                          מוכרח להיות, כי GO הבנת.

                          תגובה 1 תגובה אחרונה
                          0
                          • nigunN מנותק
                            nigunN מנותק
                            nigun
                            השיב לאהרן ב נערך לאחרונה על ידי
                            #33

                            @אהרן
                            לא התכוונתי להיכנס לוויכוח הזה (בעקיר כי אני לא יודע)
                            סך הכל אני עושה השוואות בשביל להבין מה קורה.

                            @אהרן אמר באיך עובד קוד אסינכרוני בJS?:

                            אתה יודע להסביר על מאחורי התהליכים ב-GO?
                            מוכרח להיות, כי GO הבנת.

                            אמנם לא הבנתי עדיין את סודות הgo-scheduler
                            אבל GO הנחשב שפה די מינימליסטית
                            ואין שם כ"כ הרבה מה לפספס.
                            למשל מסבירים לך שgoroutine זה thread קליל
                            ואפשר להריץ אלפים כאלו בלי בעיה
                            אמנם מעניין אותי מה בדיוק ההבדל (אני בדיוק התחלית לקרוא על זה עכשיו, כי שאלת)
                            אבל לא נראה כ"כ קריטי.

                            ובכל זאת כשאני קורא מאמר שמסביר איך defer עובד
                            אני נהנה.

                            ושוב לא באתי להתנגח
                            לכל שפה יש יתרון משלה.

                            מייל: nigun@duck.com

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

                              @nigun למה עברת לפרומייז?
                              זה גם סטיה מנושא האשכול
                              וגם זריקת מה שניסו להסביר.
                              אם הבנת את הדרך הרגילה עד תומה
                              תפתח אשכול חדש מה פרומייז נותן.
                              אם לא הבנת תתמקד עד שתבין, אל תתפזר.

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

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

                              תגובה 1 תגובה אחרונה
                              4
                              • A מנותק
                                A מנותק
                                aaron
                                השיב לאהרן ב נערך לאחרונה על ידי
                                #35

                                @אהרן אמר באיך עובד קוד אסינכרוני בJS?:

                                אתה מציג א"ז כמגבלה, ונותן לנו להתנצל בשם JS.

                                קודם כל זה ללא ספק מגבלה.
                                כי זה חוסם בפניך כל אפשרות למקביליות.
                                ולא להתבלבל בין אסינק למקביליות.. אסינק הוא לא מקבילי.

                                בדיוק אתמול שמעתי דוגמא יפה לבעיות מקביליות בJS,
                                אנימיציה שרצה ברקע ומציגה אנליזות על טקסט..
                                כל טקסט שנכתב לתיבה בעצם גורם לטריגר של אנליזות.. מה שגורם לתקיעות באנימיציה כי האנליזה מתבצעת בת'רד הראשי וחוסמת את האנימיציה
                                (הפתרון היה webworker כי הוא פותח ת'רד חדש..)

                                @אהרן אמר באיך עובד קוד אסינכרוני בJS?:

                                מה נותן לך שכפול thread,

                                מקבליות וביצועים.
                                בהמשך לדוגמא שהבאתי, הרי בהכרח שהמעבד מסוגל מבחינת משאבים להריץ גם את האנליזות וגם את האנימיציה בו זמנית, (ת'רד נוסף בהכרח ירוץ על אותו ליבה.)

                                aaron.tchumim@gmail.com
                                Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

                                ווצאפ API - תיעוד שירות API לא רשמי.

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

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

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

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