只有出现警报时,代码才能正常运行

时间:2015-10-25 13:44:24

标签: javascript

好的,我已经尝试过寻找答案,但似乎没有什么比较合适......

在执行操作之前,我已经拼凑了一个功能,以查看服务器是否正在运行。它通过检查远程服务器上是否存在特定图像来实现此目的。

所有似乎都按照我的预期工作,直到我拿出要将文件名检查到屏幕的警报(出于调试目的)。

删除警报后,即使服务器已启动,它也始终将服务器报告为已关闭。

放回警报似乎可以解决问题,并且警报不必相关(正如您将从代码中看到的那样)。



      var isPinging = false;
      var serverUp;

      function Pinger_ping(ip, callback) {
        if(!isPinging) {
          isPinging = true;
          this.callback = callback
          this.ip = ip;

          var _that = this;
          this.img = new Image();

          this.img.onload = function()  {
            isPinging=false;
            serverUp=true;
          };
          
          this.img.onerror = function() {
            isPinging=false;
          };
          
          serverUp = false;
          this.img.src = "http://" + ip + "/images/checkimg.jpg?random-no-cache=" + Math.floor((1 + Math.random()) * 0x10000).toString(16);
          //unrem the line below and the code works as predicted.
          //alert("wtf");
          this.timer = setTimeout(function() {
            isPinging=false;
          }, 4500);
        }
      }
      
      function pingServer(ipaddress = '127.0.0.1') {
        var exitCode = false;
        if(!isPinging)
          Pinger_ping(ipaddress);
        if(serverUp) {
          alert("Up");
          exitCode = true;
        }
        else
          alert("Down");
        return exitCode;
      }

<!-- Just called by a simple onclick for testing. -->    
<input type="button" value="ping" onclick="pingServer();">
&#13;
&#13;
&#13;

任何想法都会受到高度赞赏,即使事实证明这只是我的搞砸了! :)

0 个答案:

没有答案