2016-11-21 29 views
0

我对JavaScript非常陌生,我通过Daniel Shiffman的p5和视频学习它。JavaScript - 每n秒做一件事

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

我知道这里已经有对这个问题的答案,但是没有一个对我有意义,因为我对JS非常陌生。

所以,如果你可以用ELI5(“解释它就像我五岁”)来回答它,那很好。

+1

的Javascript计时器将是一个完美的选择,在这里...检查的setInterval和setTimeout的 – Geeky

+4

有你'的setTimeout读了()'和'setInterval()'? – Pointy

+0

请参阅[* MDN:JavaScript计时器*](https://developer.mozilla.org/zh-CN/Add-ons/Code_snippets/Timers)。 – RobG

回答

0

在普通的香草JavaScript中,你可以使用的setInterval:

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

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

如果你要运行上面的回调函数:checkWeatherAPI,将每分钟运行一次,或者60,000毫秒econds永远的,完整的文档在这里:WindwTimers.setInterval

要停止的时间间隔,你会简单地运行这一行:

window.clearInterval(intervalID); 
0

选择是否setInterval OR setTimeout是根据您的需要和要求如下所述有关的差位。

setInterval将被调用,而不考虑API所花费的时间。对于您每5秒钟设置一次API调用的实例,由于网络延迟或服务器延迟导致您的API调用需要6秒,以下setInterval将在第一个API完成之前触发第二个API调用。

var timer = setInterval(callAPI, 5000); 

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

    }); 
} 

相反,如果你想在5秒钟后触发另一个API调用一旦第一个API调用完成后,可以更好地如下使用setTimeout

var timer = setTimeout(callAPI, 5000); 

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

setTimeout将被调用一次后n次秒。所以你可以控制何时可以像上面那样调用下一个。

MDN文档

setTimeout

setInterval

0
function doThings() { 
    //the things i want to happen (or increment) 
} 

setTimeout(function() { 
    doThings(); 
}, 1000);//milliseconds