我已经完成了learnyounode这个练习,我试图用ES2015的promise(或者如果更简单的话与其他库)重构它。我已阅读了许诺,并且我想我理解他们的工作方式,但是我想知道是否可以在以下代码中使用它们以及如何执行它。使用Promises而不是回调
我的目标是让代码更易于阅读和理解,并更好地理解过程中的承诺。
let http = require("http");
if (process.argv.length != 5) {
throw new Error("Please provide the 3 URLs as a command line arguments");
}
let urls = [];
let results = [];
let count = 0;
for (let i = 2; i < process.argv.length; i++) {
urls.push(process.argv[i]);
}
function httpGet(index) {
let url = urls[index];
let result = "";
http.get(url, res => {
res.on("data", data => {
result += data;
});
res.on('end',() => {
count += 1;
results[index] = result;
if (count === 3) {
results.forEach(function(result) {
console.log(result);
});
}
});
});
}
for (let i = 0; i < urls.length; i++) {
httpGet(i);
}
根据[文档](https://nodejs.org/api/http.html#http_http_get_options_callback)'http.get'不返回承诺并仅支持回调方法。你将不得不自己创造和解决承诺。 – Cristy
bluebirds如何对上面的代码提供帮助?*答案:根本没有* –