Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

comunicação assíncrona e tratamento de erros

Pessoal, talvez seja uma pergunta boba, mas é o seguinte: Na comunicação assíncrona, eu não preciso esperar a atividade x acabar, para que eu dê sequências as demais atividades subsequentes, porém , no caso demonstrado (.then e .catch), para eu informar que tem um erro no .catch, eu não precisaria esperar finalizar primeiro o .then? Então porque é assíncrona e não síncrona?

1 resposta
solução!

Oi Paula, tudo bem?

A confusão pode surgir porque, apesar de ser assíncrono, o tratamento de erros com .catch parece sincronizado, pois parece que precisamos esperar o .then terminar para então tratar o erro. No entanto, o que acontece na realidade é um pouco diferente.

Quando usamos Promises no JavaScript, o código dentro do .then é executado quando a Promise é resolvida, e o código dentro do .catch é executado quando a Promise é rejeitada. Esses dois blocos de código não são executados ao mesmo tempo, mas também não precisamos esperar que um termine para começar o outro. Eles são, de certa forma, independentes um do outro.

Imagine que você pediu a um amigo para comprar um livro para você. Você não precisa esperar que ele compre o livro para continuar fazendo outras coisas, certo? Isso é assincronismo. Agora, você também deu a ele instruções sobre o que fazer se o livro estiver esgotado (isso seria o nosso .catch). Você não precisa esperar ele tentar comprar o livro para dar a ele essas instruções. Se o livro estiver esgotado, ele já sabe o que fazer. Isso é o tratamento de erros com .catch.

Então, apesar de parecer que estamos esperando o .then para executar o .catch, na verdade estamos apenas preparando o que deve ser feito em cada situação, seja ela a resolução ou a rejeição da Promise.

Espero ter ajudado você a entender melhor.

Um abraço e bons estudos.

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