我遇到了javascript方法setTimeout()在移动版Safari上正确执行的问题。
我的代码如下:
function addBlock() {
if(i < full) {
$('#box-'+i).removeClass('empty');
$('#box-'+i).addClass('full');
i++;
setTimeout(addBlock, 20);
}
else {
if(fullcheck != Math.round(fullcheck)) {
i = i++;
$('#box-'+i).removeClass('empty');
// $('#box-'+i).addClass('halfbox');
$('#total-count').animate({height: barheight}, 5000);
}
if(usergiven) {
$('#box-'+randbox).css('border', '1px SOLID #FF0000');
$('#box-'+randbox).css('background-color', '#FF0000');
}
}
}
无论我使用setTimeout函数提供什么超时值,它似乎总是以相同的速度运行。
这个想法是它以比每2秒1更快的速度填充一组块(实际量应该是每秒约50秒)。
任何人都可以告诉我为什么移动版Safari没有正确执行此功能或我做错了什么?
谢谢!
答案 0 :(得分:0)
关于这个问题,有很多事情很难理解。一个是没有声明或表达式的变量数量,没有对它们应该做什么的评论(如fullcheck != Math.round(fullcheck)
。WTF!?),另一个是这个代码的行为方式,而不是你希望如何表现它。
由于代码不完整且无法运行,因此只需要猜测你的意思。我猜你是说代码在现在大约两秒内完成,你希望它在五十秒内完成。
在不知道i
和full
的值的情况下,不可能对正确的超时进行任何计算,所以我必须猜测你做错了什么。在超时的当前速率为20ms时,您将每秒处理大约500行。如果它当前在两秒钟内运行,则表示您有4000行。如果它们应该在五十秒内填满,你必须将你的超时时间延长到500毫秒。