循环setTimeout在它应该停止之前停止(创建一个微调器)

时间:2016-09-19 06:05:03

标签: javascript spinner settimeout

我正在使用setTimeout函数,该函数在循环中调用自身以创建微调器的外观。现在我只是使用来自Google的微调图像并在setTimeout函数内旋转图像,并使用全局变量旋转旋转度数。它看起来像这样:

var rotate = 0;
var rotateOn = false;

function rotateSpinner() {
    if (rotateOn) {
        setTimeout(function() {
            rotate +=5
            $('.spinner').css("transform", "rotate(" + rotate + "deg)");
            rotateSpinner();
        }, 30)
    }
}

我像这样调用微调器,这对应于向服务器发送一个socket.emit:

socket.emit('someEmit', xyz, abc)
rotateOn = true;
rotateSpinner();
$('.spinner').show();

当从服务器收到响应时,我反转上面的代码,它应隐藏然后停止微调器。

socket.on('someResponse', function() {
    $('.spinner').hide();
    rotateOn = false;
    someOtherFunction();
})

我正在使用它来填补发射到服务器和几个区域中的响应之间的差距,但是,在其中一个实例中,我必须经历相当多的循环来构建页面上的服务器响应,它导致微调器在内容实际显示之前停止几秒钟。我写出来似乎并不重要(包括移动语句将rotateOn转为false到最后,添加一个setTimeout函数,该函数不会将rotateOn转为false,直到内容完成加载等为止,等等。 ) - 我仍然停下来。我能做些什么来抵消这种情况吗?

0 个答案:

没有答案