Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Esta página foi traduzida do inglês pela comunidade. Saiba mais e junte-se à comunidade MDN Web Docs.

Funções assíncronas

BaselineWidely available

A declaraçãoasync function define umafunção assíncrona, que retorna um objetoAsyncFunction.

Você também pode definir funções assíncronas usando umaexpressão async function.

Sintaxe

async function nome([param[, param[, ... param]]]) {   instruções}
nome

O nome da função.

param

O nome de um parâmetro a ser passado para a função.

instruções

As instruções que compõem o corpo da função.

Descrição

Quando uma função assíncrona é chamada, ela retorna umaPromise. Quando a função assíncrona retorna um valor, aPromise será resolvida com o valor retornado. Quando a função assíncrona lança uma exceção ou algum valor, aPromise será rejeitada com o valor lançado.

Uma função assíncrona pode conter uma expressãoawait, que pausa a execução da função assíncrona e espera pela resolução daPromise passada, e depois retoma a execução da função assíncrona e retorna o valor resolvido.

Nota:A proposta das funçõesasync/await é de simplificar o uso de forma síncrona dasPromises e executar alguns procedimentos em um grupo dePromises. Assim comoPromises são similares acallbacks estruturados, funçõesasync/await são similares à junção degenerators comPromises.

Exemplos

Exemplo simples

js
function resolverDepoisDe2Segundos(x) {  return new Promise((resolve) => {    setTimeout(() => {      resolve(x);    }, 2000);  });}async function adicionar1(x) {  var a = resolverDepoisDe2Segundos(20);  var b = resolverDepoisDe2Segundos(30);  return x + (await a) + (await b);}adicionar1(10).then((v) => {  console.log(v); // exibe 60 depois de 2 segundos.});async function adicionar2(x) {  var a = await resolverDepoisDe2Segundos(20);  var b = await resolverDepoisDe2Segundos(30);  return x + a + b;}adicionar2(10).then((v) => {  console.log(v); // exibe 60 depois de 4 segundos.});

Reescrevendo uma cadeia dePromise com uma funçãoasync

Uma API que retorna umaPromise vai resultar em uma cadeia dePromises e separa a função em várias partes. Considere o seguinte código:

js
function pegarDadosProcessados(url) {  return baixarDados(url) // retorna uma Promise    .catch((e) => {      return baixarDadosReservas(url); // retorna uma Promise    })    .then((v) => {      return processarDadosNoWorker(v); // retorna uma Promise    });}

pode ser escrita em uma única funçãoasync desta forma:

js
async function pegarDadosProcessados(url) {  let v;  try {    v = await baixarDados(url);  } catch (e) {    v = await baixarDadosReservas(url);  }  return processarDadosNoWorker(v);}

Note que no exemplo acima não tem a instruçãoawait na instrução doreturn, porque o valor retornado de uma funçãoasync é implícitamente passado por umPromise.resolve.

Especificações

Specification
ECMAScript® 2026 Language Specification
# sec-async-function-definitions

Compatibilidade com navegadores

Notas específicas do Firefox

Veja também

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp