כתיבת קוד — שיעור 16
JavaScript מודרני
כל 2 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.
T2 · בסיסי250 נק'~18 דק'algorithmic
EventEmitter — מערכת אירועים
ממש מחלקה EventEmitter המדמה את מערכת האירועים של הדפדפן: on(event, handler) רושם handler · off(event, handler) מסיר · emit(event, *args) קורא לכל ה-handlers של האירוע לפי סדר הרישום ומחזיר רשימה של הערכים שהם החזירו. אירוע לא-מוכר → רשימה ריקה.
דוגמאות
em.on('e', f1); em.on('e', f2); em.emit('e', 10) # f1=x+1, f2=x*2 → [11, 20]
em.off('e', f1); em.emit('e', 10) → [20]
em.emit('unknown') → []
הפתרון נשמר מקומית אוטומטית.
T3 · בינוני350 נק'~25 דק'algorithmic
Debounce על זרם אירועים
ב-JS משתמשים ב-debounce כדי לא להפעיל handler על כל הקשה. נתונה רשימת אירועים events, כל אחד (t, key), ממוינת לפי t, וחלון w. אירוע 'נורה' אם אין אירוע נוסף *עם אותו key* בתוך w יחידות זמן אחריו (כלומר עבר שקט של יותר מ-w, או שזה האירוע האחרון של אותו key). החזר את האירועים שנורו לפי סדר הופעתם.
דוגמאות
debounce([(0,'a'),(1,'a'),(5,'a')], 2) → [(1, 'a'), (5, 'a')]
debounce([(0,'x'),(1,'x')], 5) → [(1, 'x')]
הפתרון נשמר מקומית אוטומטית.