Pattern RxJS avanzati
Higher-order observable, multicasting, operatori share, recupero errori, strategie di retry, backpressure, operatori personalizzati
1Qual è la differenza principale tra switchMap e mergeMap nella gestione di richieste HTTP concorrenti?
Qual è la differenza principale tra switchMap e mergeMap nella gestione di richieste HTTP concorrenti?
Risposta
switchMap annulla le richieste precedenti quando arriva un nuovo valore, mentre mergeMap mantiene tutte le sottoscrizioni attive simultaneamente. In una barra di ricerca, switchMap annulla automaticamente le richieste in corso al nuovo input, prevenendo risultati obsoleti. mergeMap è adatto per azioni indipendenti che devono tutte completarsi, come caricamenti di file in parallelo.
2Quando si dovrebbe usare concatMap invece di mergeMap per elaborare una coda di azioni utente?
Quando si dovrebbe usare concatMap invece di mergeMap per elaborare una coda di azioni utente?
Risposta
concatMap garantisce l'ordine di esecuzione attendendo il completamento di ogni observable interno prima di elaborare il successivo, mentre mergeMap elabora tutte le azioni in parallelo senza garanzia di ordine. Usa concatMap per operazioni critiche che richiedono ordine rigoroso, come transazioni bancarie sequenziali o invio di messaggi chat. mergeMap è adatto per azioni indipendenti che possono eseguire in parallelo.
3Cos'è un higher-order observable e perché richiede un operatore di flattening?
Cos'è un higher-order observable e perché richiede un operatore di flattening?
Risposta
Un higher-order observable è un observable che emette altri observable. Ad esempio, un observable di click che emette un observable di richiesta HTTP per ogni click. Senza un operatore di flattening (switchMap, mergeMap, concatMap), si ottiene una struttura annidata Observable<Observable<T>> inutilizzabile direttamente. Gli operatori di flattening si sottoscrivono automaticamente agli observable interni ed emettono i loro valori nel flusso principale.
Quale operatore usare per annullare automaticamente una ricerca in corso quando l'utente digita un nuovo input?
In che modo exhaustMap differisce da switchMap nella gestione di richieste critiche?
+19 domande da colloquio
Altri argomenti di colloquio Angular
Fondamenti di TypeScript
TypeScript Avanzato
Fondamenti di Angular
Componenti e ciclo di vita
Services & Dependency Injection
Organizzazione dei moduli Angular
Angular CLI
Direttive e Pipe
Routing e Navigazione
Form reattivi
Form template-driven
Fondamenti di RxJS
Operatori RxJS
HttpClient e chiamate API
Gestione dello stato di base
Change Detection
Angular Signals
Standalone Components
Test unitari in Angular
Testing End-to-End
Build e ottimizzazione
Fondamenti di NgRx
NgRx avanzato
Architettura Angular
Ottimizzazione delle performance
Sicurezza e best practice
Angular Universal e SSR
Micro-frontend Angular
Padroneggia Angular per il tuo prossimo colloquio
Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.
Inizia gratis