
setTimeout מפעיל פונקציה אחרי זמן שנקבע, ו-setInterval מפעיל אותה שוב ושוב בכל פרק זמן. לשניהם מעבירים callback.הטקסט המלא של הדקות הראשונות בהרצאה «שפת JavaScript - פונקציה Callback» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בואו נראה איפה כן משתמשים הרבה פעמים באינליין פאנקשיונס. משתמשים בהם כפרמטר שנשלח לפונקציה אחרת. בואו ניקח כאן איזושהי פונקציה, do something, והפונקציה הזאת מבצעת console.log.tart.end, ואם אני קורא לה do something אני רואה את ה-start ואת ה-end.
Go start the end אנחנו יכולים עכשיו להגיד לפונקציה שהיא מקבלת לסוגריים פונקציה אחרת הדבר הזה אמור להיות פונקציה והיא יכולה לקרוא לה כי זאת פונקציה כאשר אנחנו קוראים לדו סמפינג אנחנו עכשיו שולחים פונקציה לדוגמה פונקשן בצורה כזאת יש לנו פה ממש אינליין פונקשן שאנחנו כותבים או אנונימוס פונקשן אין
לה שם אנחנו פשוט שולחים אותה כמשתנה לתוך my function ואז my function קוראת לה ואז סליחה do something קוראת לה. אם אנחנו נדפיס פה console.log doing something אז אנחנו כמובן נראה קודם כל את הסטארט ואחר מכן doing something ואז את האנד.
כמובן שלא נהוג לכתוב את הכל בשורה אחת אם כתבנו מסולסלים אז נכון לרדת שורה בצורה כזאת. לו היינו גם קוראים לזה my function היינו קוראים לזה בשם משמעותי לדוגמא callback בואו נקרא לזה callback כי זה בעצם השם.
למה זה נקרא callback כי אני שולח פונקציה מפה ל do something ומה do something עושה she calls me back וקוראת לי בחזרה זאת הסיבה שזה נקרא callback אז הנה זה עובד perfect בואו נראה איזה דוגמה יותר real life כזאת.
אז בוא נניח שיש לנו כאן פונקציה פרינט פונקצ'ן פרינט ריפורט והפונקציה פרינט ריפורט רוצה להציג איזה שהוא דוח יש לנו פה ריפורט טקסט והיא מציגה קונסול לוג here is the report ומציגה קונסול לוג ריפורט טקסט ובוא נניח שיוצרת כאן קונסול לוג איזה שהוא קו הפרדה בכדי שיהיה לנו פה טיפה בשר לפונקציה,
אבל היא רוצה להציג את התאריך ואת הסיום של הדו"ח זה שעה ותאריך, והיא יכולה להציג את זה בכל מיני פורמטים. אז היא יכולה לקבל את הפורמט להצגה, או שהיא יכולה לקבל בוא נניח time print callback ופשוט לקרוא לו פה.
עכשיו כאשר אנחנו קוראים לפונקציה print report אנחנו יכולים לשלוח את הדו"ח עצמו is my report ואנחנו יכולים לשלוח איזשהו callback function בצורה כזאת שמכילה הדפסה של איזה תאריך אנחנו רוצים להציג ובאיזה פורמט.
בואו ניקח const date על איזה d שווה new date ונציג d.toLocalTimeStream אם אנחנו עכשיו מריצים את זה אז אנחנו רואים שיש לנו הצגה של דוח אבל הפונקציה עצמה שנקראת print report לא קבעה איך להציג את התאריך.
אנחנו רואים שמה שהיא יודעת לעשות זה להציג את הכותרת, קו, דו"ח, קו, ואמרה לנו תשמעו אני לא מתעסקת עם איך אתם רוצים להציג את התאריך, הנה אני קוראת לפונקציה שלכם תציגו לי את התאריך איך שבא לכם.
בואו נציג את התאריך הפעם בואו ניקח בעצם דו"ח אחר ונציג את התאריך בשיטה אחרת, נגיד לו שהוא 2 UTC String Universal Time Coordinate והנה יש לנו סיום אחר לדו"ח.
אז הנה דוגמה אחת בואו ניקח דוגמה אחרת ל callback בואו נשים את זה בהערה יש לנו פה function do calc והיא מקבלת a וb לא בוא נגיד דבר כזה היא יוצרת שני מספרים do calc with נמברס ויוצרת שני מספרים רנדומליים בואו ניקח קונסט a math floor math random פול 100 זה יוצר לי מספר רנדומלי בין 0 ל-100
בואו ניקח b ועכשיו היא רוצה לקחת קונסט c ולקבל תוצאת החישוב אבל היא לא רוצה להגדיר מהו החישוב בואו ניצור פה קאלק קולבאק היא קוראת לקאלק קולבאק שולחת