@yossiz אמר בהרצת callback רק עם התוצאה של הקריאה האחרונה:
נעלבתי
גם לי לא לקח יום אחד להבין איך הכל עובד, ואני בטוח שלך יקח פחות.
@yossiz אמר בהרצת callback רק עם התוצאה של הקריאה האחרונה:
והוא מחזיר מיד את הפרומיס בצורה סינכרונית
בהחלט, אבל שים לב להבדלים בין:
Map מיועד למיפוי ערך פשוט
SwitchMap יבטל את הרישום לObservable הפנימי הקיים וייצור Observable עבור הערך החדש
MergeMap ייצר Observable פנימי עבור הערך החדש, בלי לבטל את הObservable הפנימי, כך שאין סוף Observables פנימיים יכולים להיות פעילים במקביל (אפשר להגביל את הכמות).
ExhaustMap יתעלם מערכים חדשים כל עוד שהObservable הפנימי פעיל.
ConcatMap ימתין שהObservable הפנימי יושלם לפני שיצור Observable פנימי נוסף, הערכים נשמרים בBuffer פנימי.
להלן יישום קטנטן שמציג Countdown כתוצאה להזנה לתוך תבת טקסט, ובסיום מציג מערך המכיל את האותיות המרכיבות את הטקסט, הקוד מראה בבירור שכל פעם שמגיע ערך חדש, הObservable הפנימי הקודם יתבטל והטיימר יתאפס.
תרשים ציר זמן המתאר את ההבדלים בין הMaps השונים:
$Source מתאר את הstream המקורי.
הכחול מייצג את הערך הראשון מהstream החיצוני
הצהוב את השני
הירוק את השלישי
$Target מייצג את הstream הפנימי (כל איבר מהstream החיצוני ימופה לstream פנימי)
באיור הבא כל איבר בstream המקורי "משתכפל" כמספר הערכים שהstream הפנימי פלט (בכפוף למדיניות של האופרטורים הנ"ל):
כיתוב בבעיות טעינה