async
e await
async
A palavra reservada async
é utilizada para indicar que uma função é assíncrona. Funções assíncronas são aquelas que executam operações de forma não bloqueante, permitindo que outras tarefas continuem enquanto aguardam a conclusão da operação assíncrona.
await
A palavra reservada await
só pode ser utilizada em funções assíncronas (declaradas com async
). Ela é usada para aguardar a conclusão de uma operação assíncrona e obter seu resultado. Isso permite que o código assíncrono seja escrito de forma mais parecida com o código síncrono, melhorando a legibilidade.
Exemplo
function randomTime(min, max) {
const minInSeconds = min * 1000;
const maxInSeconds = max * 1000;
return Math.floor(
Math.random() * (maxInSeconds - minInSeconds) + minInSeconds
);
}
function wait(message) {
return new Promise((resolve, reject) => {
if (typeof message !== "string") {
reject("Valor inválido");
return;
}
setTimeout(() => {
resolve(message);
}, randomTime(1, 3));
});
}
async function execute() {
const function1 = await wait("Função 1");
console.log(function1);
const function2 = await wait("Função 2");
console.log(function2);
const function3 = await wait("Função 3");
console.log(function3);
}
execute();
/*
Função 1
Função 2
Função 3
*/
O exemplo acima demonstra como a utilização de await
simplifica a execução de operações assíncronas. As funções wait
simulam operações demoradas e, ao usar await
, o código aguarda a conclusão de cada operação antes de prosseguir para a próxima, garantindo uma execução sequencial e compreensível.