0

モバイルサファリで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である必要があります)。

モバイルサファリがこの機能を適切に実行していない理由や、私が間違っていることを誰かに教えてもらえますか?

ありがとう!

4

1 に答える 1

0

この質問に関して推論するのが難しいことはかなりたくさんあります。1つは、宣言のない変数またはそれらが何をすべきかについてのコメントのない式の量です(fullcheck != Math.round(fullcheck).WTF !?のように)、もう1つは、このコードがどのように動作するかとは対照的に、このコードがどのように動作するかです。

コードは不完全で実行できないので、あなたが何を意味するのかを推測する必要があります。今のようにコードは約2秒で完成するとおっしゃっていると思いますが、50秒で完成させたいと思います。

の値を知らずifull、正しいタイムアウトで計算を行うことは不可能なので、私はあなたが間違っていることを推測する必要があります。タイムアウトの現在のレートが20msの場合、1秒あたり約500行を処理します。現在2秒で実行されている場合は、4000行あることを意味します。それらを50秒で埋める必要がある場合は、タイムアウトを500ミリ秒まで上げる必要があります。

于 2013-08-13T13:45:56.147 に答える