NodeJS Closure - 遍历对象数组并使用来自每个对象的数据 Ping 服务器

用户3722622

我有一个从 JSON 文件中读取的服务器 JSON 对象列表。

我循环遍历每个服务器对象,从该对象中获取一个值并将其与一个字符串连接起来以创建一个 URL。然后我使用 URL 发出一个 get 请求来检查服务器是否已启动。获取请求的结果应该设置每个服务器对象的状态。

问题是在每次循环中,服务器对象中的值都显示为未定义。我似乎无法弄清楚我的关闭问题出在哪里。

var servers = require('./data/servers.json');
var ping = require('http');

var newServers = statusChecker(servers);

function statusChecker(servers) {
var i;
for(i=0;i<servers.length;i++) {
    servers[i]['status'] = function(j) {
        return function () {
                var proto = 'http://'
                var server = servers[i].servername;
                var healthEndPoint = '/health-end-point';
                var url = proto+server+healthEndPoint;
                    //This logs the url with the server part undefined
                    console.log(url);
                    ping.get(url, function(res){
                        console.log(res);
                        return true;
                    }).on('error', function(e){
                        return false;
                    });             
        }()
    }(i);
}
return servers;
}
奥利桑普斯

状态是undefined因为您试图ping.get在同步循环中插入异步代码

你想看看有关Promise.all()Promisesasync/await


这是一个使 ping 的函数的例子

 function asynchronousPing(oneServer) {
    return new Promise((resolve, reject) => {
      const proto = 'http://'
      const server = oneServer.servername;
      const healthEndPoint = '/health-end-point';
      const url = proto + server + healthEndPoint;

      ping.get(url, function (res) {
        resolve(true);
      }).on('error', function (e) {
        resolve(false);
      });
    });
  }

这是你如何称呼它

  Promise.all(servers.map(x => asynchronousPing(x)))
     .then((allStatus) => {
        console.log(allStatus);
     })
     .catch((err) => {
       console.log(err);
     });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有Einaros WebSocket的NodeJS:客户端Ping服务器VS服务器Ping客户端

来自分类Dev

配置zabbix以监视来自服务器的ping

来自分类Dev

使用nodejs解析服务器cloudCode

来自分类Dev

如何使用Windows Python ping服务器/网站?

来自分类Dev

DHCP 服务器是否真的使用“ping”检查冲突?

来自分类Dev

Ubuntu + Nodejs + curl:(52) 来自服务器的空回复

来自分类Dev

如果Linux服务器已关闭(对ping命令无响应),是否可以使用ssh重启服务器?

来自分类Dev

NodeJS:每当服务器启动时获取数据

来自分类Dev

NodeJS服务器从MongoDB返回空数据

来自分类Dev

NodeJS异步数据库获取服务器冻结

来自分类Dev

从 Wordpress 表单将数据发布到 NodeJS 服务器

来自分类Dev

如何使用选项启动Nodejs服务器?

来自分类Dev

使用NodeJS的服务器端推送

来自分类Dev

使用nodejs创建基本服务器时出现的问题

来自分类Dev

require('mysql')在OpenShift中使用NodeJS服务器失败

来自分类Dev

NodeJS 服务器是否使用多线程?

来自分类Dev

如何使用nodejs在服务器端生成图表?

来自分类Dev

Electron NodeJS服务器到服务器使用POST进行通信

来自分类Dev

Play Framework Websocket服务器无法处理来自Netty客户端的Ping帧

来自分类Dev

如何使用NodeJS服务器合并来自多个API的JSON数据

来自分类Dev

使用Javascript将ping发送到XMPP服务器

来自分类Dev

使用Flask对远程PC进行ping操作,导致服务器阻塞

来自分类Dev

使用Python与PyCharm IDE ping通多台服务器

来自分类Dev

如何使用Python ping Java和基岩Minecraft服务器的信息

来自分类Dev

Redis过期有效的机制是什么?使用回调或服务器保持ping

来自分类Dev

期望使用bash进行ssh和ping到远程服务器

来自分类Dev

CURL 不工作,但 ping 和 nslookup 是使用本地 DNS 服务器 Ubuntu16.04

来自分类Dev

使用 Javascript 按最快的 ping 时间对服务器列表进行排序

来自分类Dev

用Java Ping多个服务器

Related 相关文章

  1. 1

    带有Einaros WebSocket的NodeJS:客户端Ping服务器VS服务器Ping客户端

  2. 2

    配置zabbix以监视来自服务器的ping

  3. 3

    使用nodejs解析服务器cloudCode

  4. 4

    如何使用Windows Python ping服务器/网站?

  5. 5

    DHCP 服务器是否真的使用“ping”检查冲突?

  6. 6

    Ubuntu + Nodejs + curl:(52) 来自服务器的空回复

  7. 7

    如果Linux服务器已关闭(对ping命令无响应),是否可以使用ssh重启服务器?

  8. 8

    NodeJS:每当服务器启动时获取数据

  9. 9

    NodeJS服务器从MongoDB返回空数据

  10. 10

    NodeJS异步数据库获取服务器冻结

  11. 11

    从 Wordpress 表单将数据发布到 NodeJS 服务器

  12. 12

    如何使用选项启动Nodejs服务器?

  13. 13

    使用NodeJS的服务器端推送

  14. 14

    使用nodejs创建基本服务器时出现的问题

  15. 15

    require('mysql')在OpenShift中使用NodeJS服务器失败

  16. 16

    NodeJS 服务器是否使用多线程?

  17. 17

    如何使用nodejs在服务器端生成图表?

  18. 18

    Electron NodeJS服务器到服务器使用POST进行通信

  19. 19

    Play Framework Websocket服务器无法处理来自Netty客户端的Ping帧

  20. 20

    如何使用NodeJS服务器合并来自多个API的JSON数据

  21. 21

    使用Javascript将ping发送到XMPP服务器

  22. 22

    使用Flask对远程PC进行ping操作,导致服务器阻塞

  23. 23

    使用Python与PyCharm IDE ping通多台服务器

  24. 24

    如何使用Python ping Java和基岩Minecraft服务器的信息

  25. 25

    Redis过期有效的机制是什么?使用回调或服务器保持ping

  26. 26

    期望使用bash进行ssh和ping到远程服务器

  27. 27

    CURL 不工作,但 ping 和 nslookup 是使用本地 DNS 服务器 Ubuntu16.04

  28. 28

    使用 Javascript 按最快的 ping 时间对服务器列表进行排序

  29. 29

    用Java Ping多个服务器

热门标签

归档