Esta tradução está incompleta. Por favor, ajude a traduzir este artigo do Inglês.

O constructor da função Async cria um novo objecto async function. Em Javascript todas as funções asíncronas são na verdade objectos AsyncFunction.

 

Note-se que AsyncFunction não é um objecto global. Pode ser obtido da seguinte forma.

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

Síntaxe

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

Parâmetros

arg1, arg2, ... argN
Nomes usados pela função como nomes formais de argumentos . Cada um dos argumentos tem que ser uma string que corresponde a um identificador válido JavaScript ou uma lista separada por vírgulas; por exemplo "x", "theValue", ou "a,b".
functionBody
Uma string com os termos JavaScript que fazem parte da definição da função.

Descrição

Os objectos async function criados com o constructor AsyncFunction passam por um parsing quando as funções são criadas. Isto é menos eficiente que declarar uma função asíncrona com async function expression e chamá-la no código porque dessa forma a função passa pelo parsing ao mesmo tempo que o resto do código.

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

Nota: async functions criado com o constructor AsyncFunction não estão encapsulados ao contexto da sua criação, são sempre criados no âmbito global.

Ao correr, podem aceder às suas prórpias variáveis e às variáveis globais, no entanto não conseguem aceder às que estão no contexto donde o constructor AsyncFunction foi chamado. Isto é diferente de chamar eval com código para uma função asíncrona.

A invocação do constructor AsyncFunction como uma função, i.e. sem usar o operador new tem o mesmo efeito que invocá-lo como constructor.

Invoking the AsyncFunction constructor as a function (without using the new operator) has the same effect as invoking it as a constructor.

Propriedades

AsyncFunction.length
A propriedade comprimento do constructor do AsyncFunction, cujo valor é 1.
AsyncFunction.prototype
Permite adicionar propriedades a todos os objectos que são funções asíncronas.

AsyncFunction prototype object

Propriedades

Instâncias de AsyncFunction

As instâncias de AsyncFunction herdam métodos e propriedades do AsyncFunction.prototype. Tal como com qualquer constructor pode-se mudar o prototype object para aplicar mudanças a todos as instâncias de AsyncFunction.

Exemplos

Exemplo de criação de uma função async a partir de um constructor 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); // prints 30 after 4 seconds
});

Especificações

Specification Status Comment
ECMAScript Latest Draft (ECMA-262)
The definition of 'AsyncFunction object' in that specification.
Draft Definição inicial em ES2017.

Compatibilidade de navegadores

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
AsyncFunctionChrome Full support 55Edge Full support 15Firefox Full support 52IE No support NoOpera Full support 42Safari ? WebView Android Full support 55Chrome Android Full support 55Edge Mobile ? Firefox Android Full support 52Opera Android Full support 42Safari iOS ? Samsung Internet Android Full support 6.0nodejs Full support 7.6.0
Full support 7.6.0
Full support 7.0.0
Disabled
Disabled From version 7.0.0: this feature is behind the --harmony runtime flag.
prototypeChrome Full support 55Edge Full support 15Firefox Full support 52IE No support NoOpera Full support 42Safari ? WebView Android Full support 55Chrome Android Full support 55Edge Mobile ? Firefox Android Full support 52Opera Android Full support 42Safari iOS ? Samsung Internet Android Full support 6.0nodejs Full support 7.6.0
Full support 7.6.0
Full support 7.0.0
Disabled
Disabled From version 7.0.0: this feature is behind the --harmony runtime flag.

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
User must explicitly enable this feature.
User must explicitly enable this feature.

See also

Etiquetas do documento e contribuidores

Contribuidores para esta página: mdnwebdocs-bot, ramongr
Última atualização por: mdnwebdocs-bot,