NISHIO Hirokazu[Translate]
react-dom/test-utilsのactは何をする?
簡潔に言えば「コールバックを呼んだ後で更新キューが空になるまでflushする」

コールバックがsyncの場合はwhile文で空になるまでflushPassiveEffectsを繰り返す。
ts
const flushWork = Scheduler.unstable_flushAllWithoutAsserting || function() { let didFlushWork = false; while (flushPassiveEffects()) { didFlushWork = true; } return didFlushWork; };

asyncの場合はflushして、キューが空になるまで自分自身をキューに積み直す。
ts
function flushWorkAndMicroTasks(onDone: (err: ?Error) => void) { try { flushWork(); enqueueTask(() => { if (flushWork()) { flushWorkAndMicroTasks(onDone); } else { onDone(); } }); } catch (err) { onDone(err); } }

この他にも「actが二重になってないか」「asyncでないものをawaitしてないか」「asyncなのにawaitし忘れてないか」などのチェックのためのコードがある。
"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]