在查询间隔中显示倒计时

时间:2014-11-02 04:00:00

标签: javascript jquery

我有一个以下查询,每20秒就会发出一次服务器心跳。

var uiBlocked = false;
window.setInterval(function() {
 $.ajax({
   cache: false,
   type: 'HEAD',
   url: '/heartbeat/',
   timeout: 1000,
   async: true,
   success: function(data, textStatus, XMLHttpRequest) {
    if (uiBlocked == true && navigator.onLine) {
       uiBlocked = false;
       $.unblockUI();
      }
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
     if(textStatus != 'timeout'){
        if (uiBlocked == false){
          uiBlocked = true;
          $.blockUI({
            message: "Lost connectivity, please reconnect your machine. ",
            css: {
             border: 'none',
             padding: '15px',
             backgroundColor: '#000',
             '-webkit-border-radius': '10px',
             '- moz-border-radius': '10px',
             opacity: .5,
             color: '#fff'
           } });
      }
    }
  }
  })
 }, 20000);

现在,当服务器不可用时,我会显示消息

  

连接丢失,请重新连接机器。

作为该消息的一部分,我还要展示:

  

重试30(然后20减少到19,18等等)秒

jQuery中是否有办法获取间隔时间?

1 个答案:

答案 0 :(得分:0)

这是一个显示答案的jsFiddle

<强> HTML

 <span id="counter"></span>

<强>的JavaScript

$(function() {
    var counter = 30;
    function counterFunc() {    
       $("#counter").text(counter);
       counter--;
       if (counter > 0) {
          setTimeout(counterFunc, 1000);
       } else {
          $("#counter").text("Done!");
       }          
   }
   counterFunc();
});