- 问题: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 异步编程循环处理
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。