Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 承诺函数不识别外部变量_Javascript_Node.js - Fatal编程技术网

Javascript 承诺函数不识别外部变量

Javascript 承诺函数不识别外部变量,javascript,node.js,Javascript,Node.js,虽然我已经在python工作了相当长的一段时间,但我最近开始使用javascript,因为它与Web的紧密集成 我仍然在努力学习事件驱动编程和承诺驱动函数的概念 无论如何,下面我使用的是node.js模块。 如果给定的主机是否可以通过给定的端口访问,它可以很好地返回状态。 但是,我需要收集主机和端口状态的组合信息 例如,如果我有hosts=['hostA','hostB'] 我需要将其端口扫描状态收集为 hosts2=[('hostA',true),('hostB',false)] 使用下面的代

虽然我已经在
python
工作了相当长的一段时间,但我最近开始使用
javascript
,因为它与Web的紧密集成

我仍然在努力学习事件驱动编程和承诺驱动函数的概念

无论如何,下面我使用的是
node.js
模块。 如果给定的主机是否可以通过给定的端口访问,它可以很好地返回状态。 但是,我需要收集主机和端口状态的组合信息

例如,如果我有
hosts=['hostA','hostB']

我需要将其端口扫描状态收集为

hosts2=[('hostA',true),('hostB',false)]

使用下面的代码,我可以获得每个主机的端口扫描的单独状态,但当我尝试将其添加到阵列
host2
时,它返回为空。 promise函数似乎无法获取/识别外部变量
aHost

const isPortReachable = require('is-port-reachable');

hosts = [ 'host' , 'host2'];
var hosts2  = new Array();

for ( var l = 0; l < hosts.length; l++) {
    var aHost = hosts[l];
    const myFunction = (aHost) =>{
    return isPortReachable(8443, {host: aHost})
    };
    myFunction(aHost).then(result => {
    console.log(aHost, result);
    hosts2.push((aHost,result));
    });
}
console.log(hosts2);

非常感谢您的帮助。

isPortReachable
是异步的。您需要的是类似于
Promise.all(hosts.map(myFunction))。然后是(hosts2=>console.log(hosts2))
node myscript.js
[]
hostA true
hostB false