gpt4 book ai didi

javascript - 通过匿名函数使用 setInterval 的更好方法

转载 作者:行者123 更新时间:2023-12-02 18:08:54 24 4
gpt4 key购买 nike

我有一个代码,可以从服务器获取对象数组并将它们显示在列表中。这里一切工作正常,除了我觉得代码很草率而且效率不高。我可以在 AJAX 调用中的某个位置实现 setInterval ,这样我就不会在最后调用 setInterval 吗?另外,如果我在代码中调用 setInterval,如何才能让 AJAX 调用进行刷新,同时在页面打开时显示我从服务器获取的字符串?我对 AJAX 和 jQuery 非常陌生(第一天尝试 AJAX),所以一如既往,任何语法/缩进编辑都非常感谢!

function displayMessages(messages){
$('.messages').append('<li>' + messages + '</li>');
}
function fetchMessages(){
$.ajax({type: "GET",
url: "https://api.parse.com/1/classes/chats",
success: function(data) {
for(var i = 0 ; i < 10; i++){
displayMessages(data.results[i].text);
if($('.messages li').length > 10){
$('.messages li').first().remove();
}
}
}

});
}
fetchMessages();
setInterval(fetchMessages,3000);

最佳答案

您可能对此处的解决方案感兴趣; JavaScript: How to get setInterval() to start now?

这使您可以使用立即调用的匿名函数,然后定期调用:

function setIntervalAndExecute(fn, t) {
fn();
return setInterval(fn, t);
}

你可以这样使用它:

var timer = setIntervalAndExecute(function() {
$.ajax({
type: "GET",
url: "https://api.parse.com/1/classes/chats",
success: function(data) {
for (var i = 0; i < 10; i++) {
displayMessages(data.results[i].text);
var msgs = $('.messages li');
if (msgs.length > 10) {
msgs.first().remove();
}
}
}
});
}, 5000);

附注您还缺少 setInterval 的第二个参数,它是以毫秒为单位的时间间隔。

关于javascript - 通过匿名函数使用 setInterval 的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19873341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com