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:

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.

Propriedas

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 contrutor de uma AsyncFunction

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

Especificação Situação Comentário
ECMAScript Latest Draft (ECMA-262)
The definition of 'AsyncFunction object' in that specification.
Padrão em tempo real Definição inicial no ES2017.

Compatibilidade de navegadores

Feature Chrome Firefox (Gecko) Internet Explorer  Edge Opera Safari (WebKit)
Basic support 55 52.0 (52.0) ? ? 42 ?
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support ? ? 52.0 (52.0) ? 42 ? 55

Veja também

Etiquetas do documento e colaboradores

 Colaboradores desta página: alefesouza
 Última atualização por: alefesouza,