Syntax für eine asynchrone Pfeilfunktion

Lesezeit: 5 Minuten

Syntax fur eine asynchrone Pfeilfunktion
BonsaiEiche

Ich kann eine JavaScript-Funktion als “asynchron” markieren (dh ein Versprechen zurückgeben) mit dem async Stichwort. So was:

async function foo() {
  // Do something
}

Was ist die äquivalente Syntax für Pfeilfunktionen?

  • Es ist erwähnenswert, dass Sie dies zumindest mit Firefox und Babel tun können

    – Jaromanda X

    22. März 17 um 22:55 Uhr

  • var foo = async () => await Promise.resolve('ha'); – funktioniert einwandfrei

    – Jaromanda X

    22. März 17 um 22:56 Uhr

  • Sprichwort it doesn't work ist bedeutungslos … erhalten Sie eine Fehlermeldung? Vielleicht machst du etwas anderes falsch, ohne den Code, der “nicht funktioniert” und eine aussagekräftige Beschreibung, wie es nicht funktioniert, kannst du nur vermuten, dass du etwas falsch machst (oder einen alten Browser verwendest)

    – Jaromanda X

    22. März 17 um 22:57 Uhr

  • das kann durchaus @Pointy sein, aber es funktioniert nativ in aktuellem Firefox und Chrome und node.js (7.7.4)

    – Jaromanda X

    22. März 17 um 22:59 Uhr


  • Der ES2017-Spezifikation hat einen Abschnitt über asynchrone Pfeilfunktionsdefinitionen @Pointy.

    – Ketzeraffe

    22. März 17 um 23:05 Uhr

Syntax fur eine asynchrone Pfeilfunktion
BonsaiEiche

Asynchron Pfeilfunktionen sieht aus wie das:

const foo = async () => {
  // do something
}

Asynchron Pfeilfunktionen so aussehen für a einziges Argument dazu übergegangen:

const foo = async evt => {
  // do something with evt
}

Asynchron Pfeilfunktionen so aussehen für mehrere Argumente dazu übergegangen:

const foo = async (evt, callback) => {
  // do something with evt
  // return response with callback
}

Der anonym Formular geht auch:

const foo = async function() {
  // do something
}

Eine asynchrone Funktion Erklärung sieht aus wie das:

async function foo() {
  // do something
}

Verwenden der Async-Funktion in a Ruf zurück:

const foo = event.onCall(async () => {
  // do something
})

Verwenden Async-Methode innerhalb von a Klasse:

async foo() {
  // do something
}

  • Das OP scheint nach einer benannten, asynchronen Pfeilfunktion zu suchen, die die einzige Syntax ist, die Sie nicht zeigen.

    – jfriend00

    22. März 17 um 23:19 Uhr

  • Tatsächlich, const foo = async () => {} erstellt eine benannte asynchrone Funktion namens foo. Es ist durchaus möglich, benannte Funktionen auf diese Weise auszuführen (nur kein Heben). In ES2016+ wird die Zuordnung einer anonymen Funktion zu einer Variablen nach der Variablen benannt, wenn sie dort deklariert ist.

    – Benjamin Grünbaum

    22. März 17 um 23:55 Uhr

  • @BenjaminGruenbaum Bitte nennen Sie es nicht benannte Funktion. In js ist eine benannte anonyme Funktion eine sehr spezifische Syntax foo = function bar () {} die geschaffen wurde, um zu ersetzen arguments.callee beim Schreiben rekursiver anonymer Funktionen. Was Sie dort haben, ist eine Variable namens foo das ist ein Verweis auf eine Funktion.

    – Schlafmann

    4. Juni 17 um 2:32 Uhr

  • @slebetman seit ES2015, wenn du es tust const foo = async () => {} der Name der Funktion wird auf gesetzt fooecma-international.org/ecma-262/6.0/… und ecma-international.org/ecma-262/6.0/… – Siehe Diskussion in esdiscuss.org/topic/…

    – Benjamin Grünbaum

    4. Juni 17 um 19:03 Uhr

  • @FarisRayhan Es ist wie bei anderen Konstanten die Referenz der Variablen somefunction kann nach der Einstellung nicht mehr geändert werden. (Es zeigt auf Ihre anonyme asynchrone Funktion.)

    – QWERTZ

    24. Juli 18 um 12:16 Uhr

Wie andere ich die Farbe der Kopfleiste und der Adressleiste
Edoardo L’Astorina

Dies ist die einfachste Art, eine zuzuweisen async Pfeilfunktion Ausdruck zu einem genannt Variable:

const foo = async () => {
  // do something
}

(Beachten Sie, dass dies nicht unbedingt gleichwertig ist mit async function foo() { }. Abgesehen von den Unterschieden zwischen den function Schlüsselwort und ein Pfeilausdruck, die Funktion in dieser Antwort ist es nicht „auf die Spitze gehoben“.)

  • Beachten Sie, dass ein benannter Funktionsausdruck eine sehr spezifische Syntax in Javascript ist. Dies ist KEIN benannter Funktionsausdruck. Die Verwendung der richtigen Wörter ist wichtig, um später Verwirrung zu vermeiden, wenn sich ein Satz zu zwei Bedeutungen entwickeln kann. Zu Ihrer Information, ein benannter Funktionsausdruck ist: foo = function myName () {}. Der Name ist myName und es ist angegeben, dass es nur innerhalb der anonymen Funktion existiert und nirgendwo außerhalb definiert ist. Sein Zweck ist zu ersetzen arguments.callee beim Schreiben rekursiver anonymer Funktionen.

    – Schlafmann

    4. Juni 17 um 2:30 Uhr

  • Ich wollte Sie @slebetman technisch anfechten, da dies ein (Pfeil-) Funktionsausdruck ist und Sie am Ende eine benannte Funktion (dh foo.name === 'foo'). Aber nur, weil es im Initialisierer von a steht const *Anweisung* – was bedeutet, dass es nicht ganz richtig ist, dies als “benannten asynchronen Pfeilfunktionsausdruck” zu bezeichnen. Sie haben auch Recht, dass der Name eines benannten Funktionsausdrucks nur ist gebunden in seinem eigenen Körper, aber es wird auch in dem der Funktion gespeichert name -Eigenschaft, die sich gut zum Debuggen eignet (und häufiger der Grund ist, warum ich sie nenne).

    – Vaz

    02.09.17 um 23:32 Uhr

  • Um es anders auszudrücken, es gibt keinen “benannten Pfeilfunktionsausdruck”, aber er kann “benannt” werden, indem er Teil einer Konstante oder eines Let ist Erklärung (bei var wegen des Hebens nicht sicher), im Sinne eines Namens fn.name sowie eine Bindung im Geltungsbereich (die Variable).

    – Vaz

    02.09.17 um 23:35 Uhr

1643915708 726 Syntax fur eine asynchrone Pfeilfunktion
Michael

Sofort aufgerufene asynchrone Pfeilfunktion:

(async () => {
    console.log(await asyncFunction());
})();

Sofort aufgerufener asynchroner Funktionsausdruck:

(async function () {
    console.log(await asyncFunction());
})();

Syntax fur eine asynchrone Pfeilfunktion
Codespiegel

Async Arrow-Funktionssyntax mit Parametern

const myFunction = async (a, b, c) => {
   // Code here
}

Einfaches Beispiel

folder = async () => {
    let fold = await getFold();
    //await localStorage.save('folder');
    return fold;
  };

Syntax fur eine asynchrone Pfeilfunktion
Justin E. Samuels

Sie können auch Folgendes tun:

 YourAsyncFunctionName = async (value) => {

    /* Code goes here */

}

async function foo() {
  // do something
}

Ist äquivalent zu:

const foo = async () => {
   // do something
}

Aufruf von foo mit einem Argument wie im folgenden Beispiel:

async function foo(arg1) {
  // do something
}

Entspricht dem Aufruf von foo auf diese Weise (beide Möglichkeiten sind akzeptabel, da Klammern optional, aber nicht erforderlich sind, wenn nur ein Argument angegeben wird)

const foo = async arg1 => {
  // do something
}

const foo = async (arg1) => {
  // do something
}

wenn Sie foo mit zwei oder mehr Argumenten aufrufen

async function foo(arg1, arg2) {
  // do something
}

Entspricht: (Klammern sind jetzt erforderlich)

 const foo = async (arg1, arg2) => {
    // do something
 }

Und für ein praktisches Beispiel mit einer Await-Verwendung im Inneren:

const foo = async () => await Promise.resolve('done');

.

759110cookie-checkSyntax für eine asynchrone Pfeilfunktion

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy