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