Ich kann eine Javascript-Funktion mit dem async
Schlüsselwort als "asynchron" markieren (dh ein Versprechen zurückgeben) . So was:
async function foo() {
// do something
}
Was ist die äquivalente Syntax für Pfeilfunktionen?
javascript
promise
async-await
arrow-functions
BonsaiOak
quelle
quelle
var foo = async () => await Promise.resolve('ha');
- funktioniert gutit doesn't work
ist bedeutungslos ... bekommen Sie einen Fehler? Vielleicht machen Sie etwas anderes falsch, ohne den Code, der "nicht funktioniert" und eine aussagekräftige Beschreibung, wie es nicht funktioniert, können Sie nur vermuten, dass Sie etwas falsch machen (oder einen alten Browser verwenden)Antworten:
Async Pfeil Funktionen wie folgt aussehen:
Async arrow Funktionen für eine so aussehen einziges Argument an sie übergeben:
Async arrow Funktionen wie folgt aussehen für mehrere Argumente an sie übergeben:
Das anonyme Formular funktioniert auch:
Ein asynchroner Funktion Erklärung sieht wie folgt aus :
Verwenden der asynchronen Funktion in einem Rückruf :
quelle
const foo = async () => {}
Erstellt tatsächlich eine benannte asynchrone Funktion mit dem Namenfoo
. Es ist durchaus möglich, benannte Funktionen auf diese Weise auszuführen (nur kein Heben). In ES2016 + benennt die Zuweisung einer anonymen Funktion zu einer Variablen diese nach der Variablen, wenn sie dort deklariert ist.foo = function bar () {}
, diearguments.callee
beim Schreiben rekursiver anonymer Funktionen ersetzt wurde. Was Sie dort haben, ist eine Variable mit dem Namenfoo
, die auf eine Funktion verweist.const foo = async () => {}
den Namen der Funktion ausführen, wird auffoo
- ecma-international.org/ecma-262/6.0/… und ecma-international.org/ecma-262/6.0/… gesetzt - siehe Diskussion in esdiscuss.org / topic /…somefunction
nach dem Festlegen nicht mehr geändert werden. (Es zeigt auf Ihre anonyme asynchrone Funktion.)Dies ist der einfachste Weg , um einen zuweisen
async
Pfeil Funktion Ausdruck auf eine benannte Variable:(Beachten Sie, dass dies nicht unbedingt gleichbedeutend ist mit
async function foo() { }
. Abgesehen von den Unterschieden zwischen demfunction
Schlüsselwort und einem Pfeilausdruck wird die Funktion in dieser Antwort nicht "nach oben gehoben" .)quelle
foo = function myName () {}
. Der Name istmyName
und es wird angegeben, dass er nur innerhalb der anonymen Funktion existiert und nirgendwo außerhalb definiert ist. Es soll ersetzt werden,arguments.callee
wenn rekursive anonyme Funktionen geschrieben werden.foo.name === 'foo'
) haben. Aber nur, weil es sich um den Initialisierer einerconst
* Anweisung * handelt - 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 in seinem eigenen Körper gebunden ist, sondern auch in dername
Eigenschaft der Funktion gespeichert ist , was sich gut zum Debuggen eignet (und häufiger der Grund ist, warum ich sie benenne).fn.name
sowie eine Bindung im Bereich (die Variable).Sofort aufgerufene asynchrone Pfeilfunktion:
Sofort aufgerufener asynchroner Funktionsausdruck:
quelle
Asynchrone Pfeilfunktionssyntax mit Parametern
quelle
Grundlegendes Beispiel
quelle
Sie können auch tun:
quelle