运行部分功能一次,但每隔5秒运行一次功能

时间:2013-10-03 11:22:10

标签: javascript jquery

我有一个检查服务器连接状态的函数。我想每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);

});

1 个答案:

答案 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。下次,它会发现fadeFlagtrue,因此它什么也没做。