JavaScript - 每隔n秒做一次事

时间:2016-11-21 00:52:50

标签: javascript html intervals

我对JavaScript很新,我正在通过Daniel Shiffman的p5和视频来学习它。

我一直在寻找一种方法来每分钟更新一次程序来检查天气api,所以我不必自己刷新页面。

我知道这里已经有了这个问题的答案,但是没有一个对我有意义,因为我对JS很新。

所以如果你能用一个ELI5(“解释它就像我五岁”那样的话来回答它那么好。

4 个答案:

答案 0 :(得分:15)

setInterval()是您最简单的选择。

看看这个简单的例子:

// Will execute myCallback every 0.5 seconds 
var intervalID = window.setInterval(myCallback, 500);

function myCallback() {
 // Your code here
}

可在此处找到更多信息和更多示例:https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setIntervalhttps://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval

答案 1 :(得分:2)

在普通的Javascript中,您可以使用setInterval:

var intervalID = window.setInterval(checkWeatherAPI, 60000);

function checkWeatherAPI() {
  // go check API 
  console.log("checking weather API");
}

如果您要运行上述操作,则回调函数:checkWeatherAPI,将每分钟运行一次,或者永久运行60,000毫秒,完整文档在此处:WindwTimers.setInterval

要停止间隔,您只需运行此行:

window.clearInterval(intervalID);

答案 2 :(得分:1)

WM_CLOSE

答案 3 :(得分:0)

选择setIntervalsetTimeout是否基于您的需求和要求,稍后会对下面的差异进行解释。

无论API采用何种时间,都会调用

setInterval。对于一个实例,您每隔5秒设置一次API调用,并且由于网络延迟或服务器延迟,您的API调用需要6秒,下面的setInterval将在第一个API完成之前触发第二个API调用。

var timer = setInterval(callAPI, 5000);

function callAPI() {
  // TO DO
  triggerXhrRequest(function(success){

  });
}

相反,如果您想在第一次API调用完成后5秒钟后触发另一个API调用,则可以更好地使用setTimeout,如下所示。

var timer = setTimeout(callAPI, 5000);

function callAPI() {
  // TO DO
  triggerXhrRequest(function(success){
      timer = setTimeout(callAPI, 5000);
  });
}

setTimeout将在n秒后调用一次。因此,您可以控制何时可以按上述方式调用下一个。

MDN文档

setTimeout

setInterval