#C | עזרה באיתור או יצירת אופרטור ריאקטיבי
-
יש לי תוכנה עם נגן וידאו מוטמע, יש למטה את מחוון המיקום שהמשתמש יכול לגרור אותו ולחפש מקומות אחרים בקובץ,
נכון לעכשיו בכל אירוע של גרירה מתבצעת פעולת חיפוש בקובץ, ובקבצים באיכות גבוהה זה לא זורם חלק,
אני מחפש את האופרטור (ריאקטיבי) שבכל פעולה של גרירה הוא יסנן את הערכים הרבים ויחזיר רק ערך אחד בכל פרק של זמן שניתן כקלט, זה דומה ל -Throttle
אבל Throttle מחכה שכל שלא יהיה תפוקה בכלל לזמן מסויים ורק אח"כ הוא נותן את הערך האחרון, אני מחפש משהו דומה ל Throttle שיסנן כמות של ערכים אבל כן יחזיר לי פעם בשניה (לדוג') את הערך האחרון.המטרה שלי שבזמן שהמשתמש יגרור את העכבר כדי לחפש מיקום אחר בקובץ, החיפוש יתבצע פעם בעשירית שנייה או פחות, אבל לא בכל אירוע של גרירה.
-
@צדיק-תמים כתבתי בפוסט הראשון למה Throttle לא טוב לי ו - Throttle בדוטנט זה debounce ב - RxJs, זה אותו אופרטור עם שם שונה.
אם אני ישתמש עם debounce, התוצאה שאני אקבל זה כשהמשתמש יגרור את העכבר לחפש מקום בקובץ שום דבר לא ישתנה עד שהוא יפסיק לגרור, כי ב-debounce הטיימר מתאפס בכל פעם שמגיע ערך (ורק כשעבר פרק זמן בלי שהגיע שום ערך, הוא מחזיר את הערך האחרון), אני כן צריך שהאופרטור יפיק ערך לפי פרק זמן קבוע בלי קשר למתי הגיע הערך האחרון, ואז התוצאה שבזמן שהמשתמש גורר את העכבר כל עשירית שניה מתבצע חיפוש בקובץ. -
@קומפיונט עכשיו הבנתי את כוונתך
אולי תיצור לבד כזה דבר?
צריך לכאורה פשוט לאחסן את הזמן שבו השינוי טופל, וכל פעם לבדוק האם עבר X זמן מאז, אם כן מעדכנים את הזמן ומטפלים בערך החדש, אם לא מתעלמים
דוגמה בסיסית בJS:
https://codepen.io/madrichim/pen/xxBBXqm?editors=1111 -
@צדיק-תמים אני בדוטנט והספרייה זה Rx.NET. כל מי שלא משתמש עם Rx היה עושה בדיוק מה שכתבת, אבל זה הדבר האחרון שהייתי רוצה לעשות, כי אם כבר הכל ריאקטיבי אז למה להסתבך עם משתנים ותנאים, מה שחסר זה רק להוסיף את האופרטור הנכון.
ואגב, מצאתי את האופרטור Sample אז בעצם יש לי כבר תשובה לשאלה..