מתכנתים משתמשים באירועי תזמון כדי לעכב ביצוע קוד מסוים, או לחזור על קוד במרווח מסוים.
בספריית JavaScript קיימות שתי פונקציות מקומיות המשמשות לביצוע משימות אלה: setTimeout()
ו- setInterval()
.
setTimeout
setTimeout()
משמש לעיכוב ביצוע הפונקציה שעברה בפרק זמן מוגדר.
ישנם שני פרמטרים שאתה מעביר אליהם setTimeout()
: הפונקציה שאליה ברצונך להתקשר, ומשך הזמן באלפיות השנייה לעיכוב ביצוע הפעולה.
זכור שיש 1000 אלפיות השנייה (שניות) בשנייה אחת, לכן 5000 אלפיות שווה ל -5 שניות.
setTimeout()
יבצע את הפונקציה מהוויכוח הראשון פעם אחת לאחר שחלף הזמן שצוין.
דוגמא:
let timeoutID; function delayTimer() { timeoutID = setTimeout(delayedFunction, 3000); } function delayedFunction() { alert(“Three seconds have elapsed.”); }
כאשר delayTimer
נקראת הפונקציה היא תפעל setTimeout
. לאחר 3 שניות (3000 אלפיות שניים), זה יבוצע delayedFunction
אשר ישלח התראה.
setInterval
השתמש setInterval()
כדי לציין פונקציה שתחזור עליה עם עיכוב זמן בין הביצועים.
שוב, שני פרמטרים מועברים setInterval()
: הפונקציה שאליה ברצונך להתקשר, ומשך הזמן באלפיות השנייה לעיכוב כל שיחה בפונקציה.
setInterval()
ימשיך לבצע עד לניקוי.
דוגמא:
let intervalID; function repeatEverySecond() { intervalID = setInterval(sendMessage, 1000); } function sendMessage() { console.log(“One second elapsed.”); }
כאשר הקוד שלך מתקשר לפונקציה repeatEverySecond
הוא יפעל setInterval
. setInterval
יפעיל את הפונקציה sendMessage
בכל שנייה (1000 אלפיות שנייה).
clearTimeout ו- clearInterval
ישנן פונקציות מקומיות המתאימות לעצירת אירועי התזמון: clearTimeout()
ו- clearInterval()
.
יתכן ששמת לב שכל פונקציית טיימר לעיל נשמרת למשתנה. כאשר הפונקציה setTimeout
או setInterval
פועלת, מוקצה לה מספר שנשמר במשתנה זה. שים לב ש- JavaScript עושה את כל זה ברקע.
מספר שנוצר זה ייחודי לכל מופע של טיימרים. המספר המוקצה הזה הוא גם אופן זיהוי הטיימרים כשרוצים לעצור אותם. מסיבה זו, עליך תמיד להגדיר את הטיימר שלך למשתנה.
למען בהירות הקוד שלך, אתה תמיד צריך להתאים clearTimeout()
ל setTimeout()
ו clearInterval()
ל setInterval()
.
כדי לעצור טיימר, התקשר לפונקציה הברורה המתאימה והעביר אותה למשתנה מזהה הטיימר שתואם את הטיימר שברצונך לעצור. התחביר עבור clearInterval()
והוא clearTimeout()
זהה.
דוגמא:
let timeoutID; function delayTimer() { timeoutID = setTimeout(delayedFunction, 3000); } function delayedFunction() { alert(“Three seconds have elapsed.”); } function clearAlert() { clearTimeout(timeoutID); }