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