קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ Javascript ♦ טיפ לראיון עבודה | Debounce in Javascript

טיפ לראיון עבודה | Debounce in Javascript

וינר יאיר 6 בנובמבר 2021 תגובה אחת

ראיון עבודה הוא דבר שכולנו חוששים ממנו תמיד מלחיץ\מרגש תלוי באופי האישי שלכם אבל אני בטוח ב99 אחוז שכולנו לא באים לראיון עבודה ונשארים אדישים. לדעתי זה נובע מכך שלמעשה ראיון עבודה הוא סוג של בוחן. בוחנים אותנו ביכולות הפיתוח שלנו, וכן כמו בכל מבחן חייבים ללמוד ולהתכונן היטב.

ראיון עבודה כמתכנת פרונט אנד front-end

בקצרה אציין כי הטיפ של Debounce in Javascript לראיון עבודה הוא בתחום הפרונט אנד אז אם אתם אינכם מפתחי פרונט עדיין הקונספט הזה קיים ושווה לדעת, אבל פה אציג דוגמה בjavascript שמתאימה פרונטיסטים.

למה שואלים על Debounce in Javascript בראיון עבודה?

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

מה זה Debounce

הקונספט של Debounce in Javascript הוא בעיקר מה לחסוך בביצועים, למשל (כמה דוגמאות):

  • חיפוש עם אוטוקופליט – אם כל אות שהיוזר ילחץ תשלחו בקשה לסנן את המידע אז יהיו המון קריאות מיותרות שירוצו. עם Debounce in Javascript אפשר להמתין עד שהיוזר יסיים להקליד , ואז לשלוח את הבקשה.
  • פעולות של תזוזת עכבר, אם המשתמש צריך להזיז את הסמן לנקודה מסויימת ואז לעצור אין סיבה לתפוס את כל האיוונטים , אפשר גם פה להשתמש ב Debounce ולחסוך בפעולות יקרות
  • שימוש ב scroll גם כן יכול שווה להשתמש ב Debounce.
  • לחצית על כפתור גם כן ניתן לעשות שימוש עם Debounce . לשמל כפתור של עגלה אם היוזר לחץ בטעות פעמיים או 3 אין סיבה לשלוח 3 בקשות, שימוש ב Debounce יחסוך גם פה.

וש עוד המון מקרים שאפשר להשתמש ב Debounce. (מספיק דוגמאות לדעתי)

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

איך עובד Debounce in Javascript

השימוש ב Debounce למעשה צד את הקליק \ האיוונט האחרון על ידי timeout, בהנחה שמשתמשים עושים פעולות במהירות מסויימת ולכן נרצה למנוע פעולות לא נחוצות, על ידי כך שתיהיה לנו פונקצית Debounce שתקבל 2 משתנים, אחת תיהיה פונקציה (שתעשה את הפעולה הרצויה , למשל תפעיל את המיון בחיפוש) ומשתנה נוסף שיגדיר את הtimeout . ולמעשה אם לא "הגענו" למשך הזמן (כלומר עדין קיים הטיימאאוט) שהגדרנו ונוצר פעולה נוספת, אז הפעולה הקודמת תתבטל ובמקומה תתחיל הפעולה הבאה, ברגע שכן משך הזמן בין הפעולות הסתיים (מימש את timeout) אז כן תשלח הבקשה, יש להשמש ב closures לצורך המימוש. לאחר הדוגמה אסביר עוד קצת.

להלן דוגמה פשוטה של קליק עם Debounce

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Debounce in Javascript</title>
</head>
<body>
    <button id="button">Click</button>
</body>
  <script>
  const debounce = (fn, delay) =>{
  let timeoutId;
  return function(...args){
    
    if(timeoutId){
      clearTimeout(timeoutId);
    }
    timeoutId = setTimeout(()=>{
      fn(...args)
    },delay)
  }
}


document.getElementById('button').addEventListener('click',debounce((e)=>{console.log('click')},2000));

  </script>
</html>

אז כפי שאתם רואים, יש לנו שימוש ב closure, כך שהפונקציה מחזירה פונקציה אנונימית ומשתמשת בסקופ של הפונקציה החיצונית. כך אנחנו יכולים לעשות את השימוש נחוץ לנו עם timeoutId . מה שקורה בעצם זה שבמידה וקיים טיימאאוט אנחנו נאפס אותו כל קליק שאינו עולה על 2 שניות הפרש מהקליק הקודם וכן יריץ שוב את טיימאאוט (עם הפונקציה fn) ובמידה וכן הסתיים התהליך אז הפונקציה שלנו (במקרה הזה fn) תצא לפעול.

לסיכום Debounce

קודם כל זה שימושי מאד ויכול לשפר את החוויה של היוזר וגם לשפר את הביצועים של הממשק.

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

אבל למה צריך לטפל בזה בUI ?

יש האומרים שחלק מהבקשות שנשלחות לשרת כבר מטופלות בצד השרת אין סיבה לטפל בUI אבל כן כדאי להגן גם מצד הUI על המקרים הללו, כמו כן אם מדובר בכפתורים או כל מיני טריגרים שלא רוצים שירוצו כמה פעמים אפשר גם לשים disable על אותו פתור או לשים גם loader ולהבטיח מקסימום ביצועים וגם חיווי למשתמש .

פוסטים קשורים:

javascript closuresClosures in JavaScript | מה זה? תמונת אווירה של קוביות ואת מוזהבתמדריך javascript למתחיל 101 (שיטת כתיבה) תמונת אווירה של מקשים במקלדתאיך לכתוב string על כמה שורות ב-javascript מותאם ל-IE11 לימודי javascript - for loop offor loop of | איטרציה למערכים ב javascript. עם אינדקס
javascript טיפים לראיון עבודה ראיון עבודה מתכנת פרונט אנד

אודות המחבר

יאיר וינר להציג את כל הפוסטים של וינר יאיר


« פוסט קודם
פוסט הבא »

תגובה אחת

  1. ריקי הגב 26 ביוני 2024 בשעה 23:47

    הסבר מעולה!

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

אתם הולכים להיות מופתעים עד כמה HTML יכול להיות חכם ולבצע משהו כל כך מורכב, שאם אנחנו היינו רוצים ליצור

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 אין תגובות
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד
דילוג לתוכן
פתח סרגל נגישות כלי נגישות

כלי נגישות

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