2017-12-19 4 views
4

Welchen Vorteil hat Async hier vor?Welchen Vorteil hat das Voranstellen von Async auf eine Funktion, die ein Versprechen zurückgibt?

async function asyncFunc() { 
    return new Promise (function (resolve, reject) { 

    }); 
} 
+0

Enthält Promise/asyncFunc eine Anfrage, die asynchron ist, sonst ist es wirklich nicht erforderlich, async Schlüsselwort für Ihre Funktion zu verwenden –

+4

Absolut keine. – Bergi

+0

@Bergi - Ich mag, dass es eine schnelle Visualisierung ist, dass es ein Versprechen zurückgibt. Es ist schön, wenn Sie alle Funktionen in Ihrer IDE reduziert haben, weil Sie die verfügbaren "öffentlichen" Methoden durchsuchen wollen. – VtoCorleone

Antwort

5

Der einzige Vorteil von async ist als visueller Marker, dass die Funktion (immer) ein Versprechen zurückgibt, und Sie müssen nicht einmal den Funktionskörper für die return Anweisung scannen. Es kann für Konsistenz nützlich sein, wenn Sie eine Zeile async function s haben.

Abgesehen davon: es gibt absolut keinen Vorteil davon. Es ist so gut wie den Rückgabewert in einem zusätzlichen Promise.resolve() Anruf umschließen. Wenn Ihr Funktionskörper nur aus einer return-Anweisung mit einem Versprechen besteht (entweder new Promise oder ein anderer Funktionsaufruf), empfehle ich, nicht async zu verwenden. Wenn Ihr Funktionskörper keinen await Ausdruck enthält, benötigen Sie das Schlüsselwort async im Allgemeinen nicht. Die Ausnahme von der Regel ist, wenn Sie sicherstellen möchten, dass die Funktion immer eine Zusage zurückgibt, auch wenn im Code eine Ausnahme ausgelöst wird, die zu einer Ablehnung des Versprechens führen sollte.

3

Ich glaube nicht, gibt es keinen Vorteil async hier verwenden, es sei denn Ihre await in Ihrer promise Funktion verwenden.

async function asyncFunc() { 
    // no await here 
} 

async/await werden in Verbindung verwendet, und es gibt keinen Punkt eines ohne andere verwenden.

+2

Was "Versprechen" Funktion * "Beziehen Sie sich? – Bergi

+2

Wenn 'explain' innerhalb des Promise-Executors verwendet wird, hilft das Hinzufügen von' async' zu 'asyncFunc' nicht - nur wenn Sie' erwarten' direkt in 'asyncFunc' verwenden wollen, ist 'async' ** erforderlich ** –

+0

möglicherweise ist die Terminologie nicht klar. Ändern meiner Antwort. –

Verwandte Themen