0

イベント リスナーの途中で待機している非同期関数が、イベント フローの状態とフェーズをドロップするのはなぜですか? それを維持することは可能ですか?

例えば、

button.addEventListener("click", async (event) => {
  eventSnapshots.push({
    title: "Sync",
    object: extract(event)
  });

  syncFn(event);
  await asyncFn();
  syncFn(event);

  writeToElement(eventSnapshots, view);
});

イベントの流れのスナップショットは次のようになります。

Sync:
{
  "phase": 2,
  "currentTarget": {},
  "path": 5,
  ...
}
SyncFn:
{
  "phase": 2,
  "currentTarget": {},
  "path": 5,
  ...
}

//await AsyncFn

SyncFn:
{
  "phase": 0,
  "currentTarget": null,
  "path": 0,
  ...
}

( https://codesandbox.io/s/pensive-hill-nzxvnl?file=/src/index.js:514-745 )

4

1 に答える 1