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

Dúvida sobre formas de se obter os "retornos"

Qual a vantagem dessa abordagem apresentada (utilizando um callback) sobre o uso de um throw para lançar o erro (e depois capturá-lo e tratá-lo na controller) e de o retorno do método ser a lista de negociações?

3 respostas

Você esta se referindo ao padrão Error First Callback? (estou me baseando no link da sua pergunta, que aponta para essa parte). Se for, lembre-se que o xmlhttprequest executa uma operação assíncrona e você não poderá fazer try e catch pois a operação não estará na pilha de execução. Por isso, segundo o padrão difundindo pelo Node.js, passamos o erro primeiro seguido do resultado da operação.

Todavia, há uma forma mais elegante de fazer isso que é através de Promises e que você aprenderá no curso.

solução!

Um simples teste que mostra que JavaScript não é Java (digo isso porque você fez cursos de Java). Lembre-se, operações assíncronas não são capturadas via try e catch porque não estão na pilha de execução:

    <script>
        const metodoAsync = () => 
            setTimeout(() => {
                throw new Error('Nunca serei pego!');
            })

        try {
            metodoAsync();
        } catch(err) {
            console.log('Nunca vai chegar aqui!');
            console.log(err);
        }
    </script>

Obrigado, Flávio!