我是 JavaScript 和 Promise 的新手,我有一个要求,我需要一次获取我的 URL(我有 10 个 URL)的 http
状态(不是连续的)。
所以我写了下面的代码。
var request = require('request');
var fun = function(i) {
request('http://myapp' + i + '.com', function(error, response, body) {
console.log(response && response.statusCode, i);
});
};
for (i = 0; i < 10; i++) {
fun(i);
}
但是我得到了 status1 然后 status2 然后 status3 等等......我的要求是一次打印所有状态。
然后尝试下面的代码
var request = require('request');
var fun = function(myapp) {
return new Promise(function(resolve, reject) {
request('http://' + myapp + '.com', function(error, response, body) {
resolve(response && response.statusCode);
});
});
};
for (i = 0; i < 10; i++) {
fun('myapp' + i).then(function(val1) {
console.log(val1);
});
}
但是,我仍然收到 status1 然后 status2 然后 status3 等等...... 任何帮助表示赞赏。
最佳答案
您可以将所有 Promise 收集到一个数组中,然后对其使用 Promise.all 来获取结果数组:
const promises = [];
for (i = 0; i < 10; i++) {
promises.push( fun('myapp' + i));
Promise.all(promises)
.then(console.log, console.error);
关于Javascript 使用请求节点模块一次打印所有状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56010227/