为什么我不能从循环外部访问我的数组?

时间:2017-12-19 09:57:37

标签: javascript arrays node.js networking

我在JavaScript中编写一个非常简单的脚本, 它应该ping一个子网中的每个IP,如果IP响应它将它放在一个数组中,如果没有响应,它将它放在一个不同的数组中。

我的问题是,当我在循环填充数组后尝试调用数组时它是空的,但是如果我在循环期间调用数组它就会填充。

这是我的代码:

var ping = require ('ping');
var targets = [];
var avail = [];
var unAvail = [];

var i = 0;
while (i < 255){
        targets.push('100.73.1.'+i);
        i++;
}
targets.forEach(function(target){
        ping.sys.probe(target, function(isAlive){
                if (isAlive){
                        unAvail.push(target);
                        console.log(unAvail);
                }else{
                        avail.push(target);
                }
        });
});

unAvail.forEach(function(ip){
        console.log(ip);
});

编辑:它正在使用的ping是npm ping https://www.npmjs.com/package/ping

编辑:修改代码以使用promise运行。

var ping = require ('ping');
var targets = [];
var avail = [];
var unAvail = [];

var i = 0;
while (i < 255){
        targets.push('100.73.1.'+i);
        i++;
}
targets.forEach(function(target){
      ping.promise.probe(target)
                .then(function(isAlive){
                        if (isAlive){
                                unAvail.push(target);
                                //console.log(unAvail);
                        }else{
                                avail.push(target);
                        }
                });
});
console.log(unAvail) 

0 个答案:

没有答案