Buscar

Funções assíncronas - JavaScript

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

Funções assíncronas - JavaScript 1
Funções assíncronas - 
JavaScript
Em JavaScript, funções assíncronas são aquelas que não bloqueiam o fluxo de 
execução do programa enquanto aguardam a conclusão de uma operação assíncrona, 
como uma requisição de rede ou uma consulta a um banco de dados. Elas permitem 
que o código continue sendo executado normalmente enquanto aguardam o resultado 
da operação assíncrona.
As funções assíncronas são definidas usando a palavra-chave async antes da palavra-
chave function . Essa declaração especial indica que a função será assíncrona e que 
pode conter o operador await , que é usado para esperar a conclusão de uma Promise 
(vou falar mais sobre Promises adiante).
Aqui está um exemplo de uma função assíncrona simples:
async function minhaFuncaoAssincrona() { 
 // Código assíncrono 
 const resultado = await outraFuncaoAssincrona(); 
 console.log(resultado); 
} 
 
minhaFuncaoAssincrona();
Funções assíncronas - JavaScript 2
Nesse exemplo, a função minhaFuncaoAssincrona é declarada como assíncrona usando a 
palavra-chave async . Em seu corpo, usamos o operador await para esperar a 
conclusão da função outraFuncaoAssincrona . A função await pausa a execução da 
função assíncrona até que a Promise retornada por outraFuncaoAssincrona seja resolvida 
ou rejeitada.
Dessa forma, a função assíncrona permite que o código aguarde o resultado da 
operação assíncrona sem bloquear a execução das instruções seguintes. Assim que a 
Promise é resolvida ou rejeitada, a execução continua.
Promises:
As Promises são um mecanismo fundamental para trabalhar com código assíncrono 
em JavaScript. Elas representam um valor que pode estar disponível agora, no futuro 
ou nunca. As Promises são usadas para encapsular operações assíncronas e fornecer 
uma maneira estruturada de lidar com seus resultados ou erros.
Uma Promise tem três estados possíveis:
1. Pendente (Pending): Estado inicial, quando a Promise está aguardando a 
conclusão da operação assíncrona.
2. Resolvida (Fulfilled): Estado quando a operação assíncrona é concluída com 
sucesso e o resultado está disponível.
3. Rejeitada (Rejected): Estado quando ocorre um erro durante a operação 
assíncrona.
Você pode criar uma Promise usando seu construtor e passando uma função que 
contém a lógica da operação assíncrona. Essa função recebe dois parâmetros: resolve 
e reject , que são funções de callback para indicar a resolução ou rejeição da Promise.
Aqui está um exemplo de criação e uso de uma Promise:
function obterDadosAssincronamente() { 
 return new Promise((resolve, reject) => { 
 setTimeout(() => { 
 const sucesso = true; 
 
 if (sucesso) { 
 resolve('Dados obtidos com sucesso!'); 
 } else { 
Funções assíncronas - JavaScript 3
 reject(new Error('Erro ao obter os dados.')); 
 } 
 }, 2000); 
 }); 
} 
 
obterDadosAssincronamente() 
 .then((resultado) => { 
 console.log(resultado); 
 }) 
 .catch((erro) => { 
 console.error(erro); 
 });
Nesse exemplo, a função obterDadosAssincronamente retorna uma nova Promise. Dentro 
da função construtora da Promise, usamos um setTimeout simulando uma operação 
assíncrona que leva 2 segundos para ser concluída. Se a operação for bem-sucedida, 
chamamos a função resolve com o resultado. Caso contrário, chamamos a função 
reject com um objeto Error contendo a descrição do erro.
Depois de criar a Promise, usamos os métodos .then() e .catch() para lidar com a 
resolução ou rejeição da Promise. O método .then() recebe uma função de callback 
que será executada quando a Promise for resolvida, passando o resultado como 
argumento. O método .catch() recebe uma função de callback que será executada 
quando a Promise for rejeitada, recebendo o objeto de erro como argumento.
Essa é apenas uma introdução às Promises. Além dos métodos .then() e .catch() , as 
Promises possuem outros recursos poderosos, como o encadeamento de Promises 
usando .then() e o uso de async/await para uma sintaxe mais concisa e legível.
As funções assíncronas e as Promises são ferramentas essenciais no JavaScript 
moderno para lidar com operações assíncronas de maneira mais eficiente, evitando o 
"callback hell" e proporcionando um código mais claro e estruturado.
Espero que essas explicações detalhadas tenham sido úteis para você compreender as 
funções assíncronas e as Promises em JavaScript. Fique à vontade para explorar mais 
exemplos e aprofundar seus conhecimentos nesses temas!
Encadeamento de Promises:
Funções assíncronas - JavaScript 4
Uma das principais vantagens das Promises é a capacidade de encadear várias 
operações assíncronas de forma mais legível e estruturada. Isso é feito usando o 
método .then() para retornar uma nova Promise dentro da função de callback.
Veja um exemplo de encadeamento de Promises:
function obterDadosAssincronamente() { 
 return new Promise((resolve, reject) => { 
 setTimeout(() => { 
 const sucesso = true; 
 
 if (sucesso) { 
 resolve('Dados obtidos com sucesso!'); 
 } else { 
 reject(new Error('Erro ao obter os dados.')); 
 } 
 }, 2000); 
 }); 
} 
 
function processarDados(dados) { 
 return new Promise((resolve, reject) => { 
 setTimeout(() => { 
 const processado = dados.toUpperCase(); 
 
 if (processado) { 
 resolve(processado); 
 } else { 
 reject(new Error('Erro ao processar os dados.')); 
 } 
 }, 2000); 
 }); 
} 
 
obterDadosAssincronamente() 
 .then((dados) => processarDados(dados)) 
 .then((resultado) => { 
 console.log(resultado); 
 }) 
 .catch((erro) => { 
 console.error(erro); 
 });
Nesse exemplo, a função obterDadosAssincronamente retorna uma Promise que obtém os 
dados de forma assíncrona. Em seguida, usamos o método .then() para encadear 
Funções assíncronas - JavaScript 5
uma nova Promise, processarDados , que processa os dados obtidos. Por fim, usamos 
outro .then() para lidar com o resultado final.
Observe como o encadeamento de Promises permite que as operações assíncronas 
sejam executadas sequencialmente, uma após a outra, mantendo o código organizado 
e legível. Isso é especialmente útil quando temos dependências entre diferentes 
operações assíncronas.
Async/Await:
Além do encadeamento de Promises com .then() , o JavaScript moderno introduziu a 
sintaxe async/await para lidar com código assíncrono de forma mais síncrona e 
semelhante à programação tradicional.
As funções assíncronas marcadas com a palavra-chave async podem usar o operador 
await para aguardar a conclusão de uma Promise. Isso permite que o código pareça 
ser síncrono, mesmo lidando com operações assíncronas.
Veja um exemplo de uso do async/await :
function obterDadosAssincronamente() { 
 return new Promise((resolve, reject) => { 
 setTimeout(() => { 
 const sucesso = true; 
 
 if (sucesso) { 
 resolve('Dados obtidos com sucesso!'); 
 } else { 
 reject(new Error('Erro ao obter os dados.')); 
 } 
 }, 2000); 
 }); 
} 
 
function processarDados(dados) { 
 return new Promise((resolve, reject) => { 
 setTimeout(() => { 
 const processado = dados.toUpperCase(); 
 
 if (processado) { 
 resolve(processado); 
 } else { 
 reject(new Error('Erro ao processar os dados.')); 
 } 
 }, 2000); 
 }); 
} 
 
Funções assíncronas - JavaScript 6
async function executarOperacoesAssincronas() { 
 try { 
 const dados = await

Continue navegando