Ao trabalhar com código assíncrono em JavaScript, é importante entender a diferença entre callbacks e Promessas. Callbacks são funções que são chamadas após uma determinada tarefa ser concluída, enquanto as Promessas são objetos que representam a eventual conclusão ou falha de uma operação assíncrona.
As Promessas oferecem várias vantagens sobre callbacks, incluindo melhor tratamento de erros e composição mais fácil. Para usar Promessas, você pode envolver seu código assíncrono em um construtor de Promessas e usar seus métodos then
e catch
para lidar com o valor resolvido ou rejeitado.
Aqui está um exemplo de uso de uma Promessa para recuperar dados de uma API:
const getData = () => { return new Promise((resolve, reject) => { fetch('https://api.example.com/data') .then(response => response.json()) .then(data => resolve(data)) .catch(error => reject(error)); }); }; getData() .then(data => console.log(data)) .catch(error => console.error(error));
O código acima demonstra como usar Promessas em JavaScript para lidar com código assíncrono.
A função getData
retorna uma nova Promessa, que aceita dois argumentos, resolve
e reject
. Esses argumentos são funções que serão chamadas quando a Promessa for resolvida ou rejeitada, respectivamente.
Dentro da função getData
, há uma chamada para a função fetch
, que é usada para fazer uma requisição HTTP para uma URL especificada. A resposta retornada pela função fetch
é tratada pelo método then
, que extrai os dados da resposta em formato JSON e os passa como argumento para a função resolve
.
Se houver algum erro durante a requisição HTTP ou ao extrair os dados da resposta, o método catch
será acionado e o erro será passado como argumento para a função reject
.
Por fim, a função getData
é chamada e sua Promessa é manipulada usando os métodos then
e catch
. O método then
aceita uma função que será chamada quando a Promessa for resolvida, e o método catch
aceita uma função que será chamada quando a Promessa for rejeitada.
Neste exemplo, se a Promessa for resolvida, os dados serão exibidos no console usando o método console.log
, e se a Promessa for rejeitada, o erro será exibido no console usando o método console.error
.
Em conclusão, o uso de Promessas em JavaScript é uma maneira eficiente e poderosa de lidar com código assíncrono. Ao compreender a diferença entre Promessas e callbacks, você pode escrever código mais organizado e fácil de manter, e aproveitar ao máximo a assincronia em suas aplicações.