Promiseは何時呼ばれるのか? 使う分には今まであまり意識してこなかったのですが、async/awaitを呼ぶことで処理がブロッキングされるのではないかというのを懸念していたのと、そもそもどのタイミングでPromiseのcallbackがされるのか気になったので今更ですが調べてみました。 Promiseが呼ばれる仕組みについては先にEventLoopとmicrotaskについて知る必要があります。 先に結論から書くと以下の感じです。 PromiseはEventLoop内のmicrotaskキューでFIFO実行される。 Timer系の処理(setImmediateやsetTimeout)はmicrotaskが全て実行された後に実行される。(つまり、setTimeout(fn, 0)はmicrotaskを全て実行した後にfnを実行するという意味) async/awaitはPromiseの箇