2

あなたは警告()は(ないのsetTimeoutでGoogle Chromeののイベントキューに充填されるためにその出力を生成)のような機能を遮断するようなものを見ることができるようにこのコードに基づいて、Google Chromeの予期しない動作()関数

for (var i = 1; i <= 6; i++) { 

(function(index){ 

    setTimeout(function() { alert(index) }, 100); 

})(i); 

} 
  • それはなぜですか?
  • Google Chromeのバグと見なされますか?

説明が必要です。

+1

:わかりやすくするために、あなたが見ている結果と何を言います。 –

+0

あなたは 'alert()'関数を同時に6ミリ秒** ** 100ミリ秒後に実行するようにchromeに指示します。あなたは何を期待していますか? –

+0

私はそれらが他のブラウザのように順番に印刷されることを期待しています... –

答えて

2

一般的に、それは任意の瞬間で(たとえば、ミリ秒の精度で)、実行の唯一つのスロットがありますし、その瞬間で起こるべきすべてのイベント(のようなsetTimeoutコールバック)することを期待するみかん理にかなっていますすべてが単一のキューになければなりません。それはここにOPの期待であるようです。

しかし、ブラウザがこのように動作することは必要ありません。スケジュール設定の現実は、ブラウザによって異なります。

したがって、どのような予測可能性があると考えても、2つのイベントの相対的な順序には決して頼らないことをお勧めします。

私は彼らとタイマーと私(同様の)欲求不満の特異な性質について、ここでアーカイブされたブログの記事を持っている:別にhttps://web.archive.org/web/20151029223348/http://blog.getify.com/on-the-nature-of-timers

関連する問題