前提・実現したいこと
return new Promise
してる関数をasync関数に書き換えたいです。
発生している問題・エラーメッセージ
失敗の方のソースコードはconsole.log(data)
が空です。
該当のソースコード
成功
JavaScript
1const request = require('request') 2 3const getData = () => { 4 return new Promise((resolve, rejcet) => { 5 request('http://www.google.com', (error, response, body) => { 6 resolve(response) 7 }) 8 }) 9} 10 11(async () => { 12 const data = await getData() 13 console.log(data) 14})()
失敗
JavaScript
1const request = require('request') 2 3const url = 'http://www.google.com' 4 5const getData = async () => { 6 let data = '' 7 8 request(url, (error, response, body) => { 9 data = body 10 }) 11 12 return data 13} 14 15(async () => { 16 const data = await getData() 17 console.log(data) 18})()
考察
失敗してしまう(値が空)理由は、request
のコールバックが実行される前にasync関数がreturn
しているからというのは自明ですが、async関数を使った書き方ができないかなと模索しています。また、async関数を使った書き方ができた場合、その書き方は一般的ですか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/14 00:04
2018/09/14 08:32
2018/09/14 09:25 編集
2018/09/16 10:48 編集
2018/09/14 09:36