É meu ponto de vista.
Não acredito que o @Kleristron esteja totalmente errado no que disse, e também não acredito que você, o @darlan_machado esteja totalmente certo em tudo que falou nessa postagem que fiz, eu pessoalmente sou contra qualquer forma de agressividade em coisas escritas nesse fórum, porque nos encontramos entre pessoas muito esclarecidas e agredir pessoas aqui no fórum é um retrocesso, eu mesmo já fiquei MUITO chateado com algumas pessoas aqui no fórum, mas existem outras formas de conseguir argumentar, por outro lado afirma como você afirmou como mostra abaixo que a explicação estava na documentação foi bem apelativo, porque você afirmou passando a maior segurança do mundo que a resposta para minha pergunta estava na documentação, e de fato, não estava.
Veja que vou responder minha própria pergunta;
Depois que postei isso aqui no fórum tive a oportunidade de conhecer algumas pessoas no Linkedin que trabalha com um pouco mais de 3 anos com essa tecnologia, ele me respondeu mais ou menos assim
Quando trabalhamos com RxJS, podemos tratar qualquer fonte de dados ou eventos como um array em JavaScript e isso abre espaço para realizarmos transformações mais facilmente. O que dificulta um pouco são os nomes dos métodos que nem sempre são de fácil entendimento.
Não vou entrar em detalhes da API do RxJS, mas você precisa saber que eles são lazy, diferente das promises que são eager. O que isso significa?
Por exemplo, se você abrir seu console do seu chrome e fizer fetch(‘enderecoqualquernaoprecisaexistir’) você estará usando a fetch API do browser que devolve uma promise. Mas verá que já nessa execução ele diz que não foi possível buscar os dados. Isso porque, a promise é eager, ou seja, mesmo eu ainda não tendo acessado o valor resultado em then ela já executa a operação.
Com um Observable a coisa é diferente. Observables são lazy, ou seja, eu posso realizar um map ou qualquer outra transformação com ele, mas ele só executará a operação quando eu realizar um subscribe nele.
Sendo assim, podemos dizer que um Observable posterga ao máximo a execução da operação e isso pode ser interessante em alguns cenários.
Então, pelas funções de transformação e pela sua característica lazy e a capacidade de tratarmos as fontes de dados como um array tornaram o RxJS interessante para a equipe do Angular.
Agora vem o lado negro da força…
Muitos sistemas possuem API’s baseadas em promises, até porque esta é a especificação da própria linguagem JavaScript sem termos a necessidade de adicionar bibliotecas ou algo parecido.
É por isso que um Observable possui o método toPromise para transformá-lo em uma promise para poder ser consumida em um chaining de promises. A equipe do RxJS não poderia ter feito diferente, já que promise é difundida ao extremo, justamente por ser parte da especificação JavaScript.
Além disso, há outra razão do Observable permitir toPromise. Uma das grandes features do ES2017 é async/await, algo que vai mudar radicalmente como programamos código assíncrono em JavaScript. A grande questão é que async/await só podem ser usado com promises e não observables!
Então, no final, o desenvolvedor precisa sacar de RxJS e não pode abdicar de promise pelas razões que eu coloquei.
Era mais ou menos a resposta que o @darlan_machado se tive boa vontade de ajudar teria dado, a explicação ele até deu, e estava dentro do contexto da explicação que dei logo acima, mas foi necessário eu afirmar para ele que não estava na documentação.
Mas ele diz o seguinte argumento!
Eu não fiquei ofendido em pedir para eu estudar a documentação, mas eu fiquei chateado em você ter dado toda a segurança de que a resposta para minha pergunta estava na documentação, e de fato, não estava
A resposta realmente só conseguir com pessoas que trabalham com isso, eu sei que o @darlan_machado estava tentando me ajudar, não acredito que ele esteja
Tentou ajuda, e ele realmente ajudou, mas só depois que eu argumentei dizendo que não tinha na documentação.
Eu já encontrei pessoas aqui que são verdadeiras perolas que vieram do Iraque, elas aparecem aqui preparados para qualquer guerra, e o @darlan_machado é um cara legal, eu vi as postagens mais antigas dele, e em muitos casos ele consegue ajudar.
O @darlan_machado só não pode aceitar que o @Kleristron venha aqui com palavras agressivas e deixe por isso mesmo.
Eu não estou puxando saco de ninguém, eu acredito que todos os comentários foram validos, e não concordo que quando você não conhece alguma coisa você sugeri para a pessoa buscar a documentação sem ter certeza que está na documentação.
Porque se realmente estivesse na documentação, o esforço que fiz de ler a documentação iria ser valida, mas como não estava na documentação a explicação explicita pareceu mais um trote.
Mas está tudo certo, e acho que as contribuições foram importantes.