2016-05-06 12 views
2

非同期関数から値を返すにはどうすればよいですか?非同期関数からの戻り値

私がしました次の約束:私は

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

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) 
    }) 
    }) 
} 

その後、私は非同期/待つ

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

そして、私は関数を実行する場合に、この約束を使用しますPromiseを取得するだけで、リクエストから返される値は取得しません。

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

しかし、私はgh上にconsole.logを置く場合、私はリクエストから値を得たが、私はgithubActivity()は私が値を返すようにしたい値をログに記録する必要はありません。

私もこれを試してみました:

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

をしかし、私はまだだけ約束していない決意から値を取得します。

どのような考えですか?

+0

は、あなたの代わりにconstのGH = ...の... = VARのGHで試してみましたか? –

+0

@ TudorConstantinええ、まだ私は約束を得ました。 – Rog

+0

これは狂っています - あなたがconsole.log(gh);戻り値ghの前に、コンテンツが表示されます –

答えて

2

access that value inside of a callbackのように見えます。

ので、代わりのconsole.log(JSON.parse(githubActivity()))、使用は:

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

ああ、私は見る!ありがとうございました!私もこれを読んでいた:http://stackoverflow.com/questions/35302431/async-await-implicitly-returns-promise – Rog

関連する問題