Boa noite,
Não consegui entender 100% da utilização do SwitchMap.
A ideia principal dele é poder executar dois ou mais observables tendo a reposta de todos em um único subscribe?
abs
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa noite,
Não consegui entender 100% da utilização do SwitchMap.
A ideia principal dele é poder executar dois ou mais observables tendo a reposta de todos em um único subscribe?
abs
O switchMap serve para que, por exemplo, se você fizer 5 requisições, ele irá processar apenas a última delas, que é a que realmente importa para nós, construiremos nosso objeto uma vez e substituiremos o array somente uma vez. Resumindo: usando switchMap todos os requests anteriores serão ignorados se um novo evento chegar.
Boa noite, Bruno! Como vai?
O switchMap() é um operador de transformação do RxJS! Ele permite que vc trate o resultado (valor emitido) de um Observable ( vamos chamar esse cara de obs1 pra facilitar o entendimento ) e te obriga a retornar um novo Observable ( o obs2 ). Só que tem um detalhe! O switchMap() finalizará automaticamente o Observable cujo valor emitido tenha sido capturado por ele ( nesse caso o obs1 ). Esse detalhe é de extrema importância pois evita em determinadas situações um problema muito conhecido: o memory leak!
Sendo assim, se vc tiver uma sequência de switchMap(), o subscribe() que vc fizer no final dirá respeito apenas ao último Observable retornado pelo último switchMap()!
Para saber mais:
Como no mundo da programação nada se cria, tudo se copia, eu indico esse post aqui do fórum da Alura onde o mestre Flávio exemplifica de forma programática isso que eu acabei de falar!
Além disso, uma fonte muito boa é a própria documentação do switchMap()! Nessa página da documentação, rola inclusive uma comparação entre o switchMap() e seu irmão quase gêmeo mergeMap()! Vale a pena dar uma olhada!
Pegou a ideia? Qualquer coisa é só falar!
Grande abraço e bons estudos, meu aluno!