AsyncFunction

Baseline Widely available

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

O construtor AsyncFunction cria um novo objeto async function. Em JavaScript cada função assíncrona é atualmente um objeto do tipo AsyncFunction.

Note queAsyncFunction não é um objeto global. Ele poderia ser obtido analisando o seguinte código:

js
Object.getPrototypeOf(async function () {}).constructor;

Sintaxe

new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody)

Parameters

arg1, arg2, ... argN

Nomes que vão ser usados pela função como argumentos formais. Cada um deve ser uma string que corresponde a um indentificador JavaScript válido ou uma lista das strings separadas com uma vírgula; por exemplo "x", "oValor", or "a,b".

functionBody

Uma string contendo as declarações JavaScript que compõem a definição da função.

Descrição

Objetos async function criados com o construtor AsyncFunction são tratados quando a função é criada. Isso é menos eficiente que declarar uma função async com a expression async function e chama-la com seu código, porque essas funções são tratadas com o resto do código.

Todos os argumentos passado para a função são tratados como nomes dos identificadores dos parâmetros na função que vai ser criada, na ordem que eles são passados.

Nota: async functions criadas com o construtor AsyncFunction não cria closures para seus contextos de criação; elas sempre criadas no escopo global. Quando rodar eles, eles só poderão acessar suas variáveis local e as globais, mas não as que estão no escopo que o construtor foi AsyncFunction chamado. Isso é diferente de usar eval com código para uma expressão async function.

Invocar o construtor AsyncFunction como uma função (sem usar o operador new) tem o mesmo efeito de invocá-lo como um construtor.

Propriedades

AsyncFunction.length

A propriedade tamanho do construtor da AsyncFunction cujo valor é 1.

AsyncFunction.prototype

Permite a adição de propriedades para todos os objetos async function.

AsyncFunction prototype object

Propriedades

AsyncFunction instances

Instância AsyncFunction herdam métodos e propriedades do AsyncFunction.prototype. Com todos os contrutores, que podem mudar o prototype do objeto construtor para fazer mudanças em todas as instâncias do AsyncFunction.

Exemplos

Criando uma async function a partir do construtor de uma AsyncFunction

js
function resolveAfter2Seconds(x) {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

var AsyncFunction = Object.getPrototypeOf(async function () {}).constructor;

var a = new AsyncFunction(
  "a",
  "b",
  "return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);",
);

a(10, 20).then((v) => {
  console.log(v); // imprime 30 após 4 seconds
});

Especificações

Specification
ECMAScript® 2025 Language Specification
# sec-async-function-objects

Compatibilidade com navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
AsyncFunction
AsyncFunction() constructor

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Veja também