我有一个检查服务器连接状态的函数。我想每5秒运行一次checkOnline。如果连接丢失,并且它一直失败,那么fadeIn for error消息也会继续运行(产生闪烁效果)。如何更改它以便淡入淡出函数只运行一次,当它失败时,仍然会继续检查连接。
$(function () {
var url = 'https://examplesite.com/';
function checkOnline() {
$.get(url).done(function () {
window.location = url;
}).fail(function () {
$('.errortext').hide().fadeIn(500);
$('.loadingtext').fadeOut(500);
});
};
window.setInterval(function () { checkOnline(); }, 5000);
setTimeout(function () { checkOnline(); }, 2000);
});
答案 0 :(得分:0)
跟踪淡入淡出效果是否已经运行。然后在运行淡入淡出之前检查它。这是一个使用名为fadeFlag的变量的示例:
var fadeFlag = false;
function fadeOnce() {
// Has fade happened already?
if (fadeFlag === false) {
// No. Then do the effects
$('.errortext').hide().fadeIn(500);
$('.loadingtext').fadeOut();
fadeFlag = true;
}
}
function checkOnline() {
$.get(url).done(function () {
window.location = url;
}).fail(function () {
// Try the fade effects
fadeOnce();
});
};
第一次调用fadeOnce()
时,它会运行效果,然后将fadeFlag
设置为true
。下次,它会发现fadeFlag
为true
,因此它什么也没做。