{if(token){getScenario().then(({scenarios} ) =>{console.log("3&q"> await ステートメントの実行順序と一致しない-PHP中国語ネットワークQ&A
await ステートメントの実行順序と一致しない
P粉691461301
P粉691461301 2023-09-12 13:42:02
0
1
478

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

リーリー

実行順序は 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
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!