我正在使用这个简单的功能,但它取决于网页打开的时间在网站上下了很多。当用户刷新或转到另一个页面时,刷新需要很长时间。
我基本上是在为用户提供新帖子。所以时间必须继续运行。
如果我不使用此功能,那么网页加载速度很快。虽然这是一个简单的功能 Plz帮助或建议任何替代方法。
$(document).ready(function() {
setInterval( "timer();", 1000 );
});
function timer(){
$.post('sendchat2.php', {option:'timer',id= $('#timer').val()}, function(data) {
$('#timer').html(data);
})
}
答案 0 :(得分:3)
我就是这样做的:
$(function () {
var $timer = $ ( '#timer' );
(function timeout () {
$.post( 'sendchat2.php', { option: 'timer', id = $timer.val() }, function ( data ) {
$timer.html( data );
setTimeout( timeout, 1000 );
});
}());
});
因此,您启动Ajax请求,等待响应,将其注入DOM,然后只有然后启动一秒钟的超时,从而重复整个过程。
一般模式:
(function f () {
async(function () {
// do work here
setTimeout( f, delay );
});
}());
因此,函数f
执行一些异步操作(例如Ajax请求)。该操作的回调函数执行一些工作(例如将Ajax响应放入DOM),最后它设置一个定时器,在给定的延迟后调用f
函数。
答案 1 :(得分:0)
减速不是因为setInterval()
,你使用setInterval每1秒调用一次该函数“timer”,这应该会使页面减慢1000(1秒)。
问题在于$.post()
,这是一个Ajax请求,究竟是做什么的,将一些信息发送到脚本(php),php然后处理导致某些输出的信息,然后这个输出是再次发送到第一页,$ .post()将此信息写入$('#timer')元素。
因此可能放缓是因为:
另外,每秒发送一个ajax请求不是很健康,php脚本可能会被重载。你可能想谷歌推送方法或轮询方法来正确开发聊天