美文网首页
Javascript 异步编程循环处理

Javascript 异步编程循环处理

作者: 五秋木 | 来源:发表于2019-10-24 16:35 被阅读0次
    1. 问题:ping 多个IP地址,按照顺序依次ping每一个IP,根据返回的结果,决定是否要ping下一个IP。
    2. 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);
          });
      });
      
    3. 使用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);
              })
          })
      }
      
    4. 循环操作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;
      }
      
    5. 用例测试
      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

    相关文章

      网友评论

          本文标题:Javascript 异步编程循环处理

          本文链接:https://www.haomeiwen.com/subject/vtldvctx.html