有没有办法在不使用setInterval的情况下检查数据库中的新更新?问题是我想更新视频标签中的视频源,但如果我每秒检查更新,那么我的视频会不断刷新。我只希望数据库更新时刷新视频。例如,如果我在数据库的current_video列中有一个猫视频,那么猫视频应该播放。否则,如果我将视频更新为狗视频,则只有这样,视频元素才会更改为狗视频。
$.get("/musicmania/playing/getCurrentSongDir", function(data, status){
setInterval(function(){
$("#video").html("<source src='/musicmania/app/resources/"
+ data + "' type='video/mp4'></source>");
}, 500);
});
您可以添加if语句并检查旧数据和新数据是否不相等,然后刷新视频。您的代码将如下所示。
var old_data='';
$.get("/musicmania/playing/getCurrentSongDir", function(data, status){
if( old_data != data ) {
$("#video").html("<source src='/musicmania/app/resources/"
+ data + "' type='video/mp4'></source>");
}
old_data = data;
});
如果你想通过ajax技术做到这一点,你必须每"x"秒发送一次请求。但是还有另一种技术叫做websockets。如果您不想每"x"秒打开一次与服务器端的连接,则可以使用 websockets。