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

Uma pergunta sobre as promessas

Achei sensacional o curso avançado do Javascript, e desejo fazer uma pergunta relacionada a aula sobre promessas

Achei muito elegante a solução do promisse.all. Outra coisa que eu gostei foi o recurso do array.map. Sei que o "map" não é novidade, mas eu gostei.

Mas eu queria um comportamento diferente da aula.

Na aula consultamos 3 endereços de uma vez só, mas, se forçarmos um erro no segundo, não volta nada para a view

Eu queria que fosse impresso na tela o que foi encontrado, mesmo que ocorra erro em alguma etapa.

Um exemplo prático, mas baseado na aula. Imagine que eu queira montar uma tabela com viagens de ônibus e eu queira listar dados de 3 empresas diferentes.

Com o array.map, eu posso padronizar o retorno e gravar seguindo o formato de minha classe (já que cada empresa deve ter um layout diferente).

Se neste exemplo duas empresas derem problema, é válido imprimir apenas o que foi encontrado na única que respondeu...

A minha solução para este problema seria criar uma variável para armazenar os resultados e fazer um código verboso utilizando a pirâmide do mal para popular esta váriavel a cada consulta bem sucedida. No final de tudo, se esta variável continuar vazia, printo o erro, caso contrário, atualizo a minha view com o conteúdo da variável.

Existe uma solução melhor para este problema?

3 respostas

Oi Daniel!

Chamar uma promise logo após a outra independentemente não resolve?

solução!

Olá Flávio!

Resolve sim. Mas eu imaginei que seria possível algo semelhante ao promise.all().

Eu vi que existe um promise.race(), mas não entendi muito bem a forma de utilizar.

Perguntando para o Google, eu achei alguém que teve a mesma dúvida.

Eu não testei o código, mas eu vi que ele acabou criando um método próprio que usa da mesma forma que o promisse.all(), mas com comportamento diferente.

Compartilho o link:

http://www.effectiveui.com/blog/2014/11/11/promise-any-a-missing-use-case/

Pois é a solução dele é interessante. Vou até marcar como solução.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software