当 ajax 返回 1 时如何删除 setTimeout 函数

How to remove setTimeout function when ajax return 1?

本文关键字:删除 setTimeout 函数 何删除 返回 ajax      更新时间:2023-09-26

我创建了getAbsentMember,以便在上午8点(办公时间)和上午9点以上为迟到的用户进行一些查询。我使用 setTimeout 函数来检查小时数。但是我想在第二个条件(大于9)中首先检查数据库中是否存在当前用户,因此如果存在,则返回1,则返回0。问题是how to remove setTimeout function if return 1(existed).

function getAbsentMember() {
var x = new Date();
var h = x.getHours();
var m = x.getMinutes();
var s  = x.getSeconds();
if (h === 8 && m === 0 && s === 0) {
    addAbsent();
}
else if(h > 9) {
    $.ajax({
        url : "checkingurl",
        type : "GET",
        dataType : "json",
        success : function (c) {
            if(c) {return false;}//how to remove setTimeout function[here]
            else  { addAbsent();}
        }
    });
}    
setTimeout(function(){
    getAbsentMember();
},1000);
}
getAbsentMember();

处理所有情况可能会变得困难,更简单的方法可能是仅在需要时添加超时

function getAbsentMember() {
  var x = new Date();
  var h = x.getHours();
  var m = x.getMinutes();
  var s = x.getSeconds();
  if (h === 8 && m === 0 && s === 0) {
    addAbsent();
    setTimeout(getAbsentMember, 1000);
  } else if (h > 9) {
    $.ajax({
      url: "checkingurl",
      type: "GET",
      dataType: "json",
      success: function(c) {
        if (c) {
          return false;
        } //how to remove setTimeout function[here]
        else {
          addAbsent();
          setTimeout(getAbsentMember, 1000);
        }
      }
    }).fail(function() {
      setTimeout(getAbsentMember, 1000);
    });
  }
}
getAbsentMember();

使用 clearTimeout() 删除setTimeout

var fn =setTimeout(function(){
    getAbsentMember();
},1000);
if(/*your condition*/){
    clearTimeout(fn);
}

尝试此操作 在需要时添加超时

function getAbsentMember() {
  var x = new Date();
  var h = x.getHours();
  var m = x.getMinutes();
  var s = x.getSeconds();
  if (h === 8 && m === 0 && s === 0) {
    addAbsent();
    setTimeout(getAbsentMember, 1000);
  } else if (h > 9) {
    $.ajax({
      url: "checkingurl",
      type: "GET",
      dataType: "json",
      success: function(result) {
        if (result!=1) {
          addAbsent();
          setTimeout(getAbsentMember, 1000);
        }
      }
    }).fail(function() {
      setTimeout(getAbsentMember, 1000);
    });
  }
}
getAbsentMember();