typescript - האם יש דרך שאני יכול לחסום בקשות HTTP בתוך ה-HTTP interceptor של אנגולר עד שבקשה אחרת תצליח?


יש לי אפליקציית אנגולר שבה קריאות API (R2, R3..) צריכות להתבצע עם כותרות מסוימות. אבל הנתונים לכותרות אלו נאספים מקריאה לשירות אחר (R1). לכן אנחנו צריכים לחסום בקשות אחרות עד ש-R1 יסתיים.

תשובה #1

ניתן להשתמש במתבונן (Observer) של RxJs במקרה זה. יש לקרוא ל-R2 ו-R3 כאשר מתקבלת תגובה מ-R1. לכן יש להירשם למתבונן במקום כלשהו ולקרוא ל-R2 ו-R3 על התגובה אם מגיע כותרת. קרא ל-observer.next מתוך תגובת R1.

תשובה #2

אני הייתי עושה את זה:

  • להפוך את R1 לנצפה מ-BehaviourSubject
  • כל הקריאות R2, R3...RX שצריכות את הכותרות האלה מנויות ל-R1 ומחכות להשלמה, ואז ממשיכות

R1 צריך להריץ פעם אחת ולשדר את ה-Observers הבא (R2, R3, ...) ול-BehaviourSubject להשמיע את האחרון() לכל המנויים שצריך לקבל הודעה

אם כל הבקשות שלך נופלות תחת דרישה זו (כל הבקשות R תלויות בכותרות אלו) אז שימוש ב-HttpInterceptor בשילוב עם BehaviourSubject הוא יותר פרקטי (כמובן). כמו כן, אתה יכול לשקול להרחיב את httpClient ולצינר את R1 עם הבקשה שאתה עומד ליצור. הכל תלוי בדרישות הפרויקט שלך

מקווה שזה עוזר