非同期関数の外で await を使用する 質問する

非同期関数の外で await を使用する 質問する

最初の関数には、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ですか?countPlayerawait isInLobby

ベストアンサー1

もちろん、常に次のことが起こります:

(async () => {
    await ...

    // all of the script.... 

})();
// nothing else

これは、await を使用できる async を使用した簡単な関数を作成します。これにより、async 関数を作成する必要がなくなるので便利です。//credits Silve2611

おすすめ記事