0

我遇到了在移动 safari 上正确执行的 javascript 方法 setTimeout() 的问题。

我的代码如下:

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 iirc 左右)。

谁能告诉我为什么移动 safari 没有正确执行这个功能或者我做错了什么?

谢谢!

4

1 回答 1

0

关于这个问题,有很多事情很难解释。一个是没有声明的变量数量或没有注释它们应该做什么的表达式(如fullcheck != Math.round(fullcheck).WTF!?),另一个是该代码的行为方式与您希望它的行为方式相反。

由于代码不完整且不可运行,因此只需猜测您的意思。我猜你是说代码在大约两秒内完成,就像现在一样,你希望它在五十秒内完成。

在不知道的值的情况下ifull不可能对正确的超时时间进行任何计算,所以我必须猜测你做错了什么。以当前 20 毫秒的超时速率,您每秒将处理大约 500 行。如果它当前在两秒内运行,这意味着您有 4000 行。如果它们应该在 50 秒内填满,则您必须将超时时间提高到 500 毫秒。

于 2013-08-13T13:45:56.147 回答