【问题标题】:Using the clearInterval the function when function meets some condition当函数满足某些条件时使用 clearInterval 函数
【发布时间】:2020-09-18 19:03:14
【问题描述】:

当函数满足某些条件时,如何使用函数clearInterval?

代码:-

var checkRecordlock = function() {
  jQuery.ajax({
    url: "http://localhost/project/crl/Mzk="
  }).done(function(data) {
    var is_locked = data.locked;
    if (is_locked == 1) {
      alert("Locked");
    }
  });
}

checkRecordlock();
var checkRecordlockIntervalId = setInterval(checkRecordlock, 100);

如果is_locked == 1,我想清除函数的区间。

【问题讨论】:

    标签: javascript jquery ajax setinterval clearinterval


    【解决方案1】:
    checkRecordlock();
    var checkRecordlockIntervalId = setInterval(checkRecordlock, 100);
    
    function checkRecordlock() {
      jQuery.ajax({
        url: "http://localhost/project/crl/Mzk="
      }).done(function(data) {
        var is_locked = data.locked;
        if (is_locked == 1) {
          clearInterval(checkRecordlockIntervalId);
        }
      });
    }
    

    【讨论】:

    • 未捕获的 ReferenceError: checkRecordlockIntervalId 未定义。
    【解决方案2】:

    您无需在间隔前致电checkRecordlock。为了在条件达到时停止它,请使用clearInterval 并将其传递给checkRecordlockIntervalId。这是一个例子:

    var checkRecordlock = function() {
        is_locked++;
        console.log(is_locked);
        if (is_locked == 10) {
          alert("Locked");
          clearInterval(checkRecordlockIntervalId)
        }
    }
    let is_locked = 0;
    //checkRecordlock();
    var checkRecordlockIntervalId = setInterval(checkRecordlock, 100);

    【讨论】:

    • 但是我的 is_locked 是由另一个使用 ajax 的页面定义的。因此,如果条件为真,我将无法更改 ajax 页面中的 is_locked 值。
    • 这只是一个例子。您是否遇到任何错误?
    • 是的,当我使用 ajax 时它仍在运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2020-02-02
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    相关资源
    最近更新 更多