ホームページ  >  に質問  >  本文

await ステートメントの実行順序と一致しない

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

リーリー

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

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

P粉691461301P粉691461301373日前550

全員に返信(1)返信します

  • P粉019353247

    P粉0193532472023-09-13 12:18:25

    問題は、非同期ではなく 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
  • キャンセル返事