繁体   English   中英

为什么setInterval一段时间后无法正常工作?

[英]Why setInterval is not working properly after a while?

我写了一个JavaScript代码,向用户显示每10秒随机的报价。 我使用jquery更新div和setInterval以重复该操作。 我正在从JavaScript数组中获取随机报价。

但是,当我对此进行测试时,似乎在一段时间(如3-5分钟)后无法正常工作,我有一些jquery效果,例如fadeIn和fadeOut,但它们在报价更改之前执行。 这是js代码;

var quotes = [
    "Some String",
    "Some String",
    "Some String"
];

$(function() {
    var $rand = $('div#randomQuote > p');
    var random_quote = quotes[Math.floor(Math.random() * quotes.length)];     
    $rand.html(random_quote);
    $rand.animate( {"opacity" : 0}, 0);
    $rand.animate( {"opacity" : 1}, 500);
    $rand.delay("9000");
    $rand.animate( { "opacity" : 0 }, 500 );    
});


function randomQuote () {
    var $rand = $('div#randomQuote > p');
    var random_quote = quotes[Math.floor(Math.random() * quotes.length)]; 
    $rand.html(random_quote);
    $rand.animate( {"opacity" : 1}, 500 );
    $rand.delay("9000");
    $rand.animate ( {"opacity" : 0}, 500 );
}

$(function () {
    setInterval(randomQuote, 10000);
});

尽管我不确定,但我认为这些行需要一些时间来计算,因此会中断循环。

var $rand = $('div#randomQuote > p');
var random_quote = quotes[Math.floor(Math.random() * quotes.length)]; 

问:如何改善此代码以使其按预期工作?

提前致谢。

这样,您的事件队列将无限期增长。 在这种情况下,您要使用的可能是setTimeout而不是setInterval。 我建议尝试以下链接: http : //ejohn.org/blog/how-javascript-timers-work/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM