2017-12-23 6 views
0

Ich habe folgendes Versprechen

let oembedData = oembed(uuid) 
    .then(res => res); 

console.log(oembedData); 

Was ich hoffe ist zurück, um die res-oembedData so kann der Wert verwendet werden, die Rückkehr verspricht.

ich weiß, ich

let oembedData; 
oembed(uuid) 
    .then((res) => { 
     oembedData = res; 
     console.log(oembedData); 
    }); 

tun können, aber ich fühle mich auf diese Weise nicht so sauber, wie das ehemalige Beispiel.

Als ich den ehemaligen verwenden meine Konsole Log-Returns Promise {$$state: {…}}

+0

Ihre beiden Beispiele sind nicht gleichwertig. 'console.log' sollte sich nur innerhalb des '.then'-Callbacks befinden, der' console.log (res); 'ausführt, so dass Sie' oembedData' überhaupt nicht benötigen. – loganfsmyth

+0

Hat Ihre Funktion eine geänderte Variable zurückgegeben? – AhammadaliPK

+0

Das machst du nicht. Du machst dein Ding innerhalb der '.then (function() {/ * hier * /}'. Versprechen sind asynchron. – PHPglue

Antwort

2

Wenn Sie frei sind async/await zu verwenden, es sieht fast aus wie man sich wünschen kann.

async function oembed(uuid) { 
    return new Promise(resolve => setTimeout(() => { 
    resolve('foo'); 
    }, 3000)); 
} 

async function getOembed() { 
    try { 
     const oembedData = await oembed('1234'); 
     console.log(oembedData); 
    } catch(err) { 
     handleError(err); 
    } 
} 

getOembed(); 
+0

Ich muss immer noch 'getOembed(). Dann()' hier getan i? –

+0

Nein, Sie können Wrap erwarten in einem Versuch/fangen Block oembed statt dann ... fangen –

+0

aktualisierten Beispiel –

Verwandte Themen