2017-05-23 3 views
3

Was ist der Unterschied zwischen folgendem Stück Codes:Verständnis Asynchronous JavaScript

Code 1:

export default async function syncData() { 
    await Promise.all([syncData1(), syncData2()]); 
} 

// called in sagas.js 
function* x() { 
    const res = yield call(syncData); 
} 

Code 2:

export default function syncData() { 
    return Promise.all([syncData1(), syncData2()]); 
} 
// called in sagas.js 
function* x() { 
    const res = yield call(syncData); 
} 
+0

Ich glaube, der einzige Unterschied besteht darin, dass die früheren Erträge ein asynchrones Funktionsobjekt, während letztere nicht. – Chris

+0

Was ist 'call', und warum gibst du sein Ergebnis? – Bergi

+0

Kein erkennbarer Unterschied, beide sind Syntaxfehler. Sie können nicht in einem Top-Level-Modul-Bereich "Ausbeute" haben. – Bergi

Antwort

4

Der Unterschied zwischen den beiden Funktionen ist await vs return . Die fehlende await ist nicht wirklich wichtig, da die Rückgabe eines Versprechens von async function immer mit dem Versprechen Ergebnis similar to return await lösen wird. Der einzige Unterschied ist der implizit zurückgegebene undefined in der ersten Lösung.

ausdrücklich Ausgeschrieben:

export default async function syncData() { 
    const res = await Promise.all([syncData1(), syncData2()]); 
    return undefined; 
} 

export default function syncData() { 
    const res = await Promise.all([syncData1(), syncData2()]); 
    return res; 
}