Javascript:10秒后调用函数,然后每1分钟调用一次
Javascript: Call function after 10 seconds, then each 1 minute
我有以下场景:
我有一个javascript ajax函数loadCars()
,需要在页面加载后10秒调用,然后每60秒调用一次。
以下是我迄今为止所尝试的:
setTimeout(function(){setInterval(function(){loadCars()}, 60000)}, 10000);
发生的情况是,函数在10秒钟后被调用,但再也没有调用过,我缺少什么?
您需要在setTimeout
和setInterval
上调用loadCars
。
setTimeout(function() {
console.log('first 10 secs');
// loadCars();
setInterval(function() {
console.log('60 secs has passed');
// loadCars();
}, 60000);
}, 10000);
console.log('page loaded');
我不同意给出的答案,因为他们使用了setInterval或者没有等待ajax调用完成。IMO您应该只在函数loadcars(和ajax调用)完成时设置一个新的超时。
示例:
function loadCars () {
// ajax call happens here
$.ajax()
.then(function(){
// call the function here
setTimeout(function(){
loadCars();
// wait a minute after you recieved the data
}, 60000)
})
}
// wait 10 seconds
setTimeout(function(){
loadCars();
}, 10000)
这样做的好处是,它只会在HTTP请求完成时开始设置新的超时,并防止函数失去同步。如果您将setinterval与ajax调用结合使用,那么下一个ajax调用将在60秒内发生,即使当前调用延迟了10秒(您不希望这样)。
您可以在loadCars()
方法中调用setTimeout(loadCars, 60000)
,就像您最初用setTimeout
10秒调用它一次一样,然后从那时起,它每次执行时都会设置1分钟的超时。。。
function loadCars()
{
//code
setTimeout(loadCars, 60000);
}
setTimeout(loadCars, 10000);
如果您希望仅在ajax
呼叫完成后安排下一次超时,则进行同步ajax
呼叫或将setTimeout()
放入ajax
呼叫的success
回调中。。。后者是更好的选择。
为了更好地控制时间和函数调用,您可以通过以下方式指定它们:
function loadCars() {
$('#log').append('Cars loaded<br />');
};
function loadManufacturers() {
$('#log').append('Manufacturers loaded<br />');
};
function loadCustomers() {
$('#log').append('Customers loaded<br />');
};
function loadContent(delays, functions) {
if (functions.length) {
setTimeout(function () {
functions.pop()();
loadContent(delays, functions);
}, delays.pop());
};
};
loadContent([3000, 2000, 1000], [loadCars, loadManufacturers, loadCustomers]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p id="log"></p>
游乐场
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- node.js:setInterval()正在跳过调用
- 如何在单击复选框后调用控制器方法
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 每分钟调用一次函数
- ASP.NET:每5分钟从代码后面调用一次弹出窗口
- Ajax调用(使用jquery)在5分钟后不再得到响应
- 每隔x分钟调用一次PHP函数
- Javascript:10秒后调用函数,然后每1分钟调用一次
- 我有JS函数,每3分钟调用setInterval -我怎么能调用它当页面加载
- 我怎么能调用SELECT语句和打印结果在我的网页上每5分钟