运行部分函数一次,但每 5 秒运行一次函数的其余部分

Run part of function once, but run rest of function every 5 seconds

本文关键字:一次 函数 余部 运行 但每 运行部      更新时间:2023-09-26

我有一个检查服务器连接状态的函数。我想每 5 秒运行一次在线检查。如果连接丢失,并且一直失败,则 fadeIn 错误消息也会继续运行(产生闪烁效果)。我怎样才能更改它,以便淡入淡出功能只运行一次,当它失败时,但仍会继续检查连接。

$(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);
});

跟踪淡入淡出效果是否已运行。然后在运行淡入淡出之前检查它。下面是一个使用名为 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,所以它什么也不做。