2023-12-30 14:25:51
Re①:AWAIT実行
生成されるJavascriptを見た感じでは特定の条件におけるバグを踏んだように思います。 ・asyncFn===trueでマークされる、非同期な命令を使用している ・pure!==falseでマークされる、変数への参照・設定を含む可能性のある命令を使用している ・その命令を呼び出しているスコープにローカル変数が存在する AWAIT実行は前2つの条件を満たしてます。 この3つの条件が揃うと、この命令の行が非同期の待機なしで実行されます(バグだと思われる)。 (「それ」への代入も非同期になってます) そのため、「その」への代入が遅れて、1つまえの「その」が見えているのだと思います。 「その」を介さずAWAIT実行の行でspに代入した場合、awaitで待つべきPromiseが代入されます。 どちらの場合も期待したようになりません。 なお、spにPromiseを入れたケースでそのPromiseをユーザ関数から戻り値とした場合は、ユーザ関数の呼び出しにawaitが付くので呼び出し元では内容が取り出せます。 王道としてはバグが修正されるのを待つことになると思います。 |