learnyounodeからこのエクササイズを完了しました。私はES2015の約束(またはもっと簡単な場合は他のライブラリ)を使ってリファクタリングしようとしています。私は約束を読んだことがあります。私はそれがどのように機能するのか理解していると思いますが、次のコードでそれを使用することができるかどうか、またその方法を知りたいと思います。コールバックの代わりに約束を使用
私の目標は、コードを読みやすく理解しやすくすること、そしてプロセスの約束をより良く理解することです。 、
'use strict';
const http = require('http');
if (process.argv.length != 5) {
throw new Error('Please provide the 3 URLs as a command line arguments');
}
let urls = [];
for (let i = 2; i < process.argv.length; i++) {
urls.push(process.argv[i]);
}
function httpGet(url) {
let result = '';
return new Promise((resolve, reject) => {
http.get(url, function (res) {
res.on('error', err => {
reject(err);
});
res.on('data', data => {
result += data;
});
res.on('end',() => {
//You can do resolve(result) if you don't need the url.
resolve({url, result});
});
})
});
}
let promises = urls.map(url => httpGet(url));
Promise.all(promises)
.then(results => {
console.log(`All done. Results: ${results}`);
})
.catch(err => {
console.error(err);
});
[ドキュメント](https://nodejs.org/api/http.html#http_http_get_options_callback)によると、 'http.get'は約束を返しません。コールバックメソッドのみをサポートします。あなたは自分自身で約束を作り、解決しなければなりません。 – Cristy
bluebirdsはどのように上記コードの助けを約束しますか?*回答:まったく* –