Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Encadear Observables

Olá! alguém poderia dar uma dica de qual a melhor forma de encadear Observables dependentes? Por exemplo, quando tenho 03 Observables e preciso que eles sejam executados em uma determinada sequência, podendo até usar o valor obtido no subscribe de um observable como parâmetro para chamada de outro.

2 respostas
solução!

Não sei em qual parte do curso você esta, mas eu ensino isso através do switchMap quando você vai adicionar um comentário. O primeiro observable adiciona e o segundo, que só pode ser chamado quando o primeiro concluir, busca os comentários novamente.

Segue um esquema simplificado para você pode ajudar:

observable1
    .fazAlgo('123') // devolve um observable
    .pipe(switchMap(emissaoObservable1 => {
        // observable2 depende do retorno do observable anterior
        return observable2.fazAlgo(emissaoObservable1);
    })
    .pipe(switchMap(emissaoObservable2 => {
        // observable3 depende do retorno do observable anterior
        return observable3.fazAlgo(emissaoObservable2);
    }).subscribe(emissaoObservable3 => {
        // faz algo aqui
    });

Ou você pode simplificar para:

observable1
    .fazAlgo('123') // devolve um observable
    .pipe(switchMap(emissaoObservable1 => 
        observable2.fazAlgo(emissaoObservable1)
     )
    .pipe(switchMap(emissaoObservable2 => 
        observable3.fazAlgo(emissaoObservable2)
     )
    .subscribe(emissaoObservable3 => {
        // faz algo aqui
    });

Lembre-se que o switchMap para a emissão do observable anterior e passa o controle para o próximo. Veja que o resultado de cada observable foi passado para o próximo.

Sucesso e bom estudo!

Obrigado Flávio! Já esperando pelo curso de RxJS :)