{if(token){getScenario().then(({scenarios} ) =>{console.log("3&q">
コードの実行シーケンスで予期しない動作が発生しました。コードスニペットは次のとおりです:
リーリー実行順序は 1,3,2 であると予想します。ただし、コードを実行すると、実際の順序は 1、2、3 になります。なぜこれが起こっているのか誰か説明できますか?
さらに、getScenario() の前に return ステートメントを含めるように reloadScenarios 関数を変更すると、実行順序が 1、3、2 (望ましい順序) に変更されたことに気付きました。本当に return ステートメントが必要なのでしょうか、それとも目的のシーケンスを実現するために何か他の説明があるのでしょうか?
問題は、非同期ではなく Promise を返さない関数を呼び出すために await を使用していることです。関数は Promise を返さないため、実行は続行されます。
表示されるシーケンスを「1,3 2」にしたい場合は、関数を
でマークする必要があります。 リーリーasync
このように、
await reloadScenarios
をマークすると、Promise が解決される (または拒否される) のを待つことになります。詳細については、ドキュメントを参照してください:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await
######編集### 申し訳ありませんが、もう 1 つ問題があります。関数で Promise を返す必要もあります。