如何更改setTimeout编号?

时间:2018-09-02 19:33:19

标签: javascript settimeout

让我们说一个网站不断从用户那里接收一些数据。如果要alert()用户在5秒钟内没有收到用户的数据,我希望它。
  这就是我要尝试的方法:

countDown = 5000

if(//some data received from user){
  countDown = 5000
}

setTimeout(
    function() {
        alert('no data in 5 seconds')
    }, countDown);
}

好吧,这是行不通的,因为它不能每次将 countDown 设置为5秒钟,因此它无法接收用户的数据,那么我该怎么做呢?

并且由于来自用户的数据是连续不断的,我想每次运行新的setTimeout()并销毁旧的call.isEmpty()都会降低性能。(?)

1 个答案:

答案 0 :(得分:1)

这更多是一种递归函数,用于检查是否有任何数据。如果不是,它将使功能在五秒钟内运行。如果数据仍然不存在,请重复该过程。

let countDown = 5000

function someFunction() {
  //this is called when you recieve data 
  timeoutFunc();
}

function timeoutFunc() {
  setTimeout(
    function() {
      if (//still don't have new data) {
        alert('no data in 5 seconds');
        timeoutFunc();
      }
    }, countDown);
  } 
}