我一直在尝试创建一个人们分享内容的网站,我目前正在尝试显示用户是否在线。这需要一个ajax请求,但我已经有一个计时器和一个每5秒运行一次的ajax请求。我该怎么做才能使两者同时运行。 这是我的代码:
setInterval(function() {checkiframe(); },5000);
function checkonline(){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
alert("true");
}
};
xhttp.open("GET", "dbcheckpost.php?u=true", true);
xhttp.send();
}
function checkiframe(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
if(xmlhttp.responseText === "true"){
location.reload();
}
}
};
xmlhttp.open("GET", "dbcheckpost.php?last=<?php echo $last; ?>", true);
xmlhttp.send();
checkonline();
}
我也试过运行两个间隔,但只有一个工作。
编辑:我忘了提到我希望他们以不同的间隔工作。一个是5秒,而另一个是10分钟答案 0 :(得分:2)
只需在setTimeout匿名函数
中添加两个函数setInterval(function() {
checkiframe();
checkonline();
},5000);
从“checkiframe”中删除“checkonline”。 如果你想在checkiframe之后执行checkOnline,那么它应该放在回调中
function checkiframe(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
checkonline();
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
if(xmlhttp.responseText === "true"){
location.reload();
}
}
};
xmlhttp.open("GET", "dbcheckpost.php?last=<?php echo $last; ?>", true);
xmlhttp.send();
}
如果您希望独立执行您的函数,请使用以分隔setInterval。 这是我测试过的示例代码。
function f1(){
console.log('1s');
}
setInterval(f1, 1000);
function f2(){
console.log('5s');
}
setInterval(f2, 5000);