0

次のように、もう一方にネストされた2つの非同期関数があります。

  //Async 1
  document.addEventListener("click", function(event){
     for (var i in event){
        //Async 2
        setTimeout(function(){
           console.log(i);
        }, 200*i);
     }
  });

私が望むのは、オブジェクトの各エントリ( i)を印刷できるようにすることです。eventただし、Firefox での出力は次のようになります。

MOZ_SOURCE_KEYBOARD
MOZ_SOURCE_KEYBOARD
MOZ_SOURCE_KEYBOARD
MOZ_SOURCE_KEYBOARD
..

Async 2console.log(i)の外に移動すると、正しい結果が得られます。

type
target
currentTarget
eventPhase
bubbles
cancelable
..

i内部async 2を読み取るときに正しく機能しないのはなぜですか? コードのAsync 2eventブロック全体でも「生きている」べきではありませんか?

4

3 に答える 3