我有一个脚本,当用户在线时需要执行很多操作。
script.js:
function myFunction() {
myVar = setInterval(online, 10000);
}
function online() {
$.ajax({
url: "/php/online.php",
type: 'post'
});
});
}
此PHP可以完成许多工作,而我每10秒只需要做一次。问题是,如果用户打开许多浏览器选项卡或窗口,则此脚本将运行多次。我只希望它在一个窗口中运行一次,但始终运行它。 有任何想法吗?如果可能的话,简单的。
答案 0 :(得分:1)
每次发出请求时,您都可以将一个项目设置为与当前时间戳相对应的localStorage
,并检查localStorage
和现在之间的时间差至少为10秒,然后再发送要求:
function myFunction() {
myVar = setInterval(online, 10000);
}
function online() {
const now = Date.now();
if (localStorage.lastPing && now - Number(localStorage.lastPing) < 10000) return;
localStorage.lastPing = now;
$.ajax({
url: "/php/online.php",
type: 'post'
});
}