- 问题:ping 多个IP地址,按照顺序依次ping每一个IP,根据返回的结果,决定是否要ping下一个IP。
- ping函数操作
var ping = require('ping');
var hosts = ['192.168.1.1', 'google.com', 'yahoo.com'];
hosts.forEach(function(host){
ping.sys.probe(host, function(isAlive){
var msg = isAlive ? 'host ' + host + ' is alive' : 'host ' + host + ' is dead';
console.log(msg);
});
});
- 使用Promise创建ping操作的函数pingResult
function pingResult(ip_address){
return new Promise(function(resolve, reject){
ping.sys.probe(ip_address, function(active){
var info = active ? 1 : 0;
console.log("当前ping的ip: " + ip_address + " ping_result: " + info);
resolve(info);
})
})
}
- 循环操作for
async function processArray(array){
var result = 0
for (const element of array){
var res = await pingResult(element);
if(res == 1){ //一旦ping成功就退出循环。失败的话就继续下一个ping。
result = 2;
break;
}
};
return result;
}
- 用例测试
var hosts = ["www.baidu.com", "www.jd.com",
"www.csdn.net", "www.qq.com",
"store.steampowered.com", "www.tmall.com",
"www.taobao.com", "www.microsoft.com", "www.ibm.com"]
var outer_status = await processArray(hosts); //成功的话就是2。
参考:
JavaScript 循环:如何处理 async/await
网友评论