2017-08-15 12 views
2

約束よりもむしろAsync/Awaitを使うためにNodeマニュアルから次のHTTPリクエストの例を書き換えることはできますか?私は、解決/拒否で新しい約束のメソッドを返すことに精通していますが、むしろasync/awaitを使用します。Async/Awaitを使用して約束ベースのHTTPリクエストを書く

const postData = querystring.stringify({ 
     'msg': 'Hello World!' 
    }); 

    const options = { 
     hostname: 'www.google.com', 
     port: 80, 
     path: '/upload', 
     method: 'POST', 
     headers: { 
     'Content-Type': 'application/x-www-form-urlencoded', 
     'Content-Length': Buffer.byteLength(postData) 
     } 
    }; 

    const req = http.request(options, (res) => { 
     console.log(`STATUS: ${res.statusCode}`); 
     console.log(`HEADERS: ${JSON.stringify(res.headers)}`); 
     res.setEncoding('utf8'); 
     res.on('data', (chunk) => { 
     console.log(`BODY: ${chunk}`); 
     }); 
     res.on('end',() => { 
     console.log('No more data in response.'); 
     }); 
    }); 

    req.on('error', (e) => { 
     console.error(`problem with request: ${e.message}`); 
    }); 

    // write data to request body 
    req.write(postData); 
    req.end(); 
+1

約束事の代わりに 'async' /' await' *を使うことはできません。 promiseは 'async' /' await'構文でのみ使用できます。 – Bergi

+0

もしそれがPromiseならば、あなたは 'async/await'を使ってそれを書き換えることができます。 – Gerardo

答えて

2

あなたが投稿約束を(reqは、より具体的には、イベント・エミッター、ClientRequestインスタンスである)を使用していませんので、何もあなたがここにasync/await構文を使用することはできませんコード。

は、私は決意とreturn new Promise方法に精通しています/いいえ、あなたはとにかく代わりPromise constructorasync/awaitを使用することはできません拒否ではなく非同期を使用します/

待っています。 thenコールの構文糖として使用できます。

+0

明快に感謝します。乾杯 – Kainan

関連する問題