Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnologia Web para desenvolvedores
  2. JavaScript
  3. Referência JavaScript
  4. Instruções e declarações
  5. Funções assíncronas

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

View in EnglishAlways switch to English

Funções assíncronas

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨abril de 2017⁩.

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