await ステートメントの実行順序と一致しない
P粉691461301
P粉691461301 2023-09-12 13:42:02
0
1
638

コードの実行シーケンスで予期しない動作が発生しました。コードスニペットは次のとおりです:

リーリー

実行順序は 1,3,2 であると予想します。ただし、コードを実行すると、実際の順序は 1、2、3 になります。なぜこれが起こっているのか誰か説明できますか?

さらに、getScenario() の前に return ステートメントを含めるように reloadScenarios 関数を変更すると、実行順序が 1、3、2 (望ましい順序) に変更されたことに気付きました。本当に return ステートメントが必要なのでしょうか、それとも目的のシーケンスを実現するために何か他の説明があるのでしょうか?

P粉691461301
P粉691461301

全員に返信(1)
P粉019353247

問題は、非同期ではなく Promise を返さない関数を呼び出すために await を使用していることです。関数は Promise を返さないため、実行は続行されます。

表示されるシーケンスを「1,3 2」にしたい場合は、関数を async

でマークする必要があります。 リーリー

このように、await reloadScenarios をマークすると、Promise が解決される (または拒否される) のを待つことになります。

詳細については、ドキュメントを参照してください: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await

######編集### 申し訳ありませんが、もう 1 つ問題があります。関数

で Promise を返す必要もあります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート