こうこく
作 ▸

JavaScriptのイベントは非同期じゃない (EventTarget)

あまりにも、あまりにも当たり前なのにわからなかった

EventTarget を初めて使ったのだが

const eventTarget = new EventTarget();
let count = 0;

eventTarget.addEventListener('foo', () => {
  console.log('!1', count);
  const end = Date.now() + 1000;
  while (Date.now() < end) {
    ++count;
  }
});

eventTarget.dispatchEvent(new Event('foo'));
console.log('!2', count);
実行結果
!1 0
!2 9815099

あ、こうなるんだ

なんかイベントって非同期なイメージがあって、てっきり !2 が先に出てくるのかと

バカなこと考えてたと思って忘れましょうね

この記事に何かあればこちらまで (非公開)