最初の関数には、2 番目の関数を実行するかモジュールを終了する条件付き戻りパラメータがあったため、2 つの非同期関数を連鎖させようとしました。しかし、仕様では見つからない奇妙な動作を発見しました。
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
これは私のコードの改変されたスニペットです(完全なスコープを見ることができますここ) は、プレイヤーがすでにロビーにいるかどうかを単にチェックしますが、これは無関係です。
次に、この非同期関数があります。
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
この関数は の場合実行する必要はありませんexit === true
。
私はやろうとした
const inLobby = await isInLobby();
これを結果まで待機して、inLobby
条件付きで実行できるようにしたいと考えましたcountPlayer
が、具体的な詳細のない typeerror を受け取りました。
await
関数のスコープ外で関数を使用できないのはなぜですかasync
? これはシュガー プロミスなので、連鎖する必要があることはわかっていますが、 内では別のプロミスを待機できるのに、 外ではできないのはなぜthen
ですか?countPlayer
await
isInLobby
ベストアンサー1
もちろん、常に次のことが起こります:
(async () => {
await ...
// all of the script....
})();
// nothing else
これは、await を使用できる async を使用した簡単な関数を作成します。これにより、async 関数を作成する必要がなくなるので便利です。//credits Silve2611