Javascript 使用请求节点模块一次打印所有状态

标签 javascript promise request-promise

我是 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/

相关文章:

javascript - VueJS 使实例属性具有反应性

javascript - 可以打印出一个对象,但无法在JS中访问它的值

javascript - Promise 内 bcrypt 的 Promise {<pending>}

javascript - 稍后在 TypeScript 中解决或拒绝 Promise

javascript - 嵌套 AJAX 调用和 $.when.apply 列表 - 延迟 promise 无法正常工作

javascript - Firebase HTTPS云函数触发两次

使用 HTTP Range header 的 Node.js 脚本请求导致字节数多于请求的字节数。

javascript - 使循环等待ajax调用

javascript - $.parseJSON 在 Internet Explorer 10 中不工作

Javascript,从 iFrame 访问框架集中的嵌套框架