我正在使用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,直到内容完成加载等为止,等等。 ) - 我仍然停下来。我能做些什么来抵消这种情况吗?