2016-05-06 22 views
2

Wie kann ich den Wert einer asynchronen Funktion zurückgeben?Rückgabewert einer asynchronen Funktion

Ich habe folgendes Versprechen:

function reqGitActivity (url) { 
    const options = { 
    url: url, 
    headers: { 
     'User-Agent': 'request' 
    } 
    } 

    return new Promise((resolve, reject) => { 
    request(options, (err, res, body) => { 
     if (err) { 
     reject(err) 
     return 
     } 
     resolve(body) 
    }) 
    }) 
} 

Dann benutze ich dieses Versprechen mit Async/Await

async function githubActivity() { 
    const gh = await reqGitActivity(`https://api.github.com/users/${github}/events`) 
    return gh 
} 

Und wenn ich führen Sie die Funktion mit:

console.log(JSON.parse(githubActivity())) 

I Erhalten Sie nur das Versprechen, aber nicht den von der Anfrage zurückgegebenen Wert.

Promise { 
    _c: [], 
    _a: undefined, 
    _s: 0, 
    _d: false, 
    _v: undefined, 
    _h: 0, 
    _n: false } 

Aber wenn ich einen console.log auf der gh gestellt bekam ich den Wert aus dem Wunsch, aber ich will nicht githubActivity() den Wert ich den Wert zurückgeben möchten loggt sein.

habe ich versucht, dies zu:

async function githubActivity() { 
    return await reqGitActivity(`https://api.github.com/users/${github}/events`) 
    .then(function (res) { 
     return res 
    }) 
} 

Aber ich immer noch nur das Versprechen und nicht der Wert aus der Entschlossenheit.

Irgendwelche Gedanken?

+0

haben Sie versucht, mit var gh = ... statt const gh = ...? –

+0

@TudorConstantin Ja, und immer noch habe ich das Versprechen bekommen. – Rog

+0

das ist verrückt - wenn Sie eine console.log (gh); vor der Rückkehr gh, wird der Inhalt angezeigt –

Antwort

2

Es sieht aus wie Sie können nur access that value inside of a callback.

Anstatt also console.log(JSON.parse(githubActivity())), zu verwenden:

githubActivity().then(body => console.log(JSON.parse(body))) 
+1

Oh, ich verstehe! Vielen Dank! Ich habe das auch gelesen: http://stackoverflow.com/questions/35302431/async-wait-implicitly-returns-promise – Rog

Verwandte Themen