Der AsyncFunction Konstruktor erstellt ein neues AsyncFunction Objekt. In JavaScript ist jede asynchrone Funktion ein AsyncFunction Objekt.

Hinweis: AsyncFunction ist kein globales Objekt. Durch die ausführung des folgenden Quelltextes kann das Objekte erhalten werden.

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

Syntax

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

Parameter

arg1, arg2, ... argN
Namen, die für die Namen der formalen Parameter der Funktion verwendet werden. Jeder muss ein String mit einem validen JavaScript-Bezeichner sein oder eine Liste von Strings, welche mit einem Komma getrennt sind; zum Beispiel "x", "theValue", oder "a,b".
functionBody
Ein String, welcher die JavaScript-Anweisungen enthält, welche die Funktion definieren.

Beschreibung

asyncFunction Objekte, die mit dem AsyncFunction Konstruktor erstellt werden, werden analysieren, wenn sie erstellt werden. Dieses ist weniger effizient als die Deklaration einer asynchronen Funktion mit einem asyncFunction Ausdruck und dem Aufruf in dem Code, weil solche Funktion mit dem Rest des Quelltextes analysieren werden.

Alle an die Funktion übergebenen Argumente werden als die Namen der Bezeichner der Parameter in der zu erstellenden Funktion in der Reihenfolge behandelt, in der sie übergeben werden.

Hinweis: Mit dem AsyncFunction Konstruktor erstellte asyncFunctions erstellen keine Closures in ihrem Erstellungskontext; Sie werden immer im globalen Scope erstellt. Wenn sie ausgeführt werden, haben sie nur Zugriff auf eigene lokale Variablen und globale Variablen, jedoch nicht auf Variablen aus dem Scope, indem der AsyncFunction Konstruktor aufgerufen wurde. Dies ist der Unterschied zum Einsatz von eval mit Quelltext für eine asynchrone Funktionsanweisung.

Das Aufrufen des AsyncFunction Konstruktors als Funktion (ohne Einsatz des new Operators) hat den gleichen Effekt wie das Aufrufen als Konstruktor.

Eigenschaften

AsyncFunction.length
Die AsyncFunction Konstruktor Längeneigenschaft, welche den Wert 1 hat.
AsyncFunction.prototype
Erlaubt das Hinzufügen von Eigenschaften zu allen AsyncFunction Objekten.

AsyncFunction Prototype Objekt

Eigenschaften

AsyncFunction.constructor
Der Initialwert ist AsyncFunction.
AsyncFunction.prototype[@@toStringTag]
Gibt "AsyncFunction" zurück.

AsyncFunction Instanzen

AsyncFunction Instanzen erben Methoden und Eigenschaften von AsyncFunction.prototype. Wie bei allen Konstruktoren ist es möglich die Eigenschaften des Konstruktor Objektes zu ändern, um Änderungen an allen AsyncFunction Instanzen vorzunehmen.

Beispiele

Erstellen einer asynchronen Funktion mit einem AsyncFunction Konstruktor

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
});

Spezifikationen

Spezifikation Status Kommentar
ECMAScript Latest Draft (ECMA-262)
Die Definition von 'AsyncFunction object' in dieser Spezifikation.
Entwurf Initiale Definition in ES2017.

Browserkompatibilität

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Grundlegende Unterstützung55 ?52 Nein42 ?
prototype55 ?52 Nein42 ?
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Grundlegende Unterstützung5555 ?5242 ?6.0
prototype ?55 ?5242 ?6.0

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: schlagi123, fscholz
 Zuletzt aktualisiert von: schlagi123,