פונקציות, תהליכונים (Threads) וביצוע אסינכרוני ב-JavaScript
עליך להבין איך JavaScript עובדת "מתחת למכסה המנוע".
להלן פירוט של פונקציות, תהליכים (processes), תהליכונים (threads) וסגנונות ביצוע.
סוגי פונקציות ב-JavaScript
- פונקציה בשם (Named Function): משתמשת בשם ספציפי. זה מקל על ניפוי שגיאות (debugging).
- פונקציה אנונימית (Anonymous Function): אין לה שם. לעיתים קרובות משתמשים בהן כ-callbacks.
- ביטוי פונקציה (Function Expression): מקצים פונקציה למשתנה.
- פונקציית חץ (Arrow Function): תחביר קצר יותר המשתמש בסימול
=>. - IIFE: ביטוי פונקציה שנקרא מיד (Immediately Invoked Function Expression). היא רצה ברגע שמגדירים אותה.
תהליך (Process) מול תהליכון (Thread)
תהליך (Process) הוא תוכנית שרצה על המחשב שלך.
- לכל תהליך יש זיכרון משלו.
- אם תהליך אחד קורס, אחרים ממשיכים לפעול.
- דוגמה: Chrome ו-Spotify הם תהליכים נפרדים.
תהליכון (Thread) הוא יחידה קטנה בתוך תהליך.
- תהליכונים חולקים את אותו הזיכרון.
- הם מאפשרים לתוכנית אחת לבצע דברים רבים בו-זמנית.
- דוגמה: בתוך Chrome, תהליכון אחד מרנדר דף בעוד שאחר מטפל בלחיצות העכבר שלך.
סינכרוני מול אסינכרוני
JavaScript היא single-threaded. היא מטפלת במשימה אחת בכל פעם באמצעות Call Stack.
ביצוע סינכרוני (Synchronous Execution):
- משימות רצות אחת אחרי השנייה.
- כל משימה מחכה שהקודמת תסתיים.
- משימות איטיות חוסמות את הרצת הקוד שלך.
ביצוע אסינכרוני (Asynchronous Execution):
- משימות רצות ברקע.
- הקוד לא עוצר בזמן ההמתנה לסיום משימה.
- זה נעשה באמצעות Web APIs, Callback Queue ו-Event Loop.
איך אסינכרוניות עובדת:
- JavaScript שולחת משימה (כמו טיימר) ל-Web API.
- הקוד הראשי ממשיך לרוץ.
- ברגע שהמשימה מסתיימת, היא עוברת ל-Callback Queue.
- ה-Event Loop מעביר אותה ל-Call Stack כאשר המחסנית ריקה.
זה שומר על אפליקציות האינטרנט שלך מהירות וקשובות (responsive).