function ping(ip) { return new Promise((resolve, reject) => { var img = new Image(); var start = new Date().getTime(); img.src = "http://" + ip + "?t=" + start; let flag = false; img.onload = function () { flag = true; resolve(flag); } img.onerror = function () { flag = true; resolve(flag); }; var timer = setTimeout(function () { if (!flag) { flag = false; resolve(flag); } }, 1500); }); } // 使用Promise来获取ping的结果 ping("www.google.com").then((flag) => { console.log(flag); });
业务中需要用到在局域网中去访问这个ip是否可用,如果不可用则访问另一个ip 这里去判断是否可以ping通,网上类似的布尔值无法返回出来做条件,并且是异步的,所以这里使用promise的方式,调用的时候因为有定时器,所以要搭配await使用