0

我有一个检查服务器连接状态的功能。我想每 5 秒运行一次 checkOnline。如果连接丢失,并且一直失败,则错误消息的 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);

});
4

1 回答 1

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()被调用,它运行效果,然后设置fadeFlagtrue。下一次,它看到fadeFlagtrue,所以它什么也不做。

于 2013-10-03T11:26:06.680 回答