条件文の文字列で複数の非同期/待機呼び出しを使用するにはどうすればよいですか?

user2796982

私はasync / awaitを条件付きで使用しています:

async function validate() {
    const a = await validateA()
    const b = await validateB()
    const c = await validateC()
    return a && b && c ? true : false
}

ただし、validateAがfalseを返した場合、validateBとvalidateCを実行する理由がないため、これは理想的ではないようです。

私はそれを次のように書き直すことができます:

async function validate() {
    const a = await validateA()
    if (!a) return false
    const b = await validateB()
    if (!b) return false
    const c = await validateC()
    return c ? true : false
}

しかし、これは私には醜いように見えます。

本当に私はこのようなことをしたいと思います(擬似コード):

async function validate() {
    return await validateA() && await validateB() && await validateC() ? true : false
}

もちろんこれは機能しませんが、ifステートメントと同様に、条件が失敗した場合、後続の条件は評価されないことを目的としています。

async / awaitでこれを正しく書くにはどうすればよいですか?

マルコス・カサグランデ
async function validate() {
    return await validateA() && await validateB() && await validateC() ? true : false
}

もちろんこれは機能しませんが、ifステートメントと同様に、条件が失敗した場合、後続の条件は評価されないことを目的としています。

できます。

validateXブール値を解決するため、次のように記述できます。

return await validateA() && await validateB() && await validateC();

const validateA = () => Promise.resolve(true);
const validateB = () => Promise.resolve(true);
const validateC = () => Promise.resolve(false);

async function validate() {
    return await validateA() && await validateB() && await validateC();
}

validate().then(res => console.log(res));


それを達成する別の方法は、解決する代わりに約束を拒否することfalseです。

const validateA = () => Promise.resolve();
const validateB = () => Promise.reject(); // Reject if validation fails
const validateC = () => Promise.resolve();


async function validate() {
    try {
    
      await validateA();
      await validateB(); // This will reject
      await validateC(); // This won't run
      return true; // If all validateX were resolved, return true.
      
    } catch(e) {
      return false;
    }
}

validate().then(res => console.log(res));

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Lambda関数がawaitで非同期関数の呼び出しを待機するようにするにはどうすればよいですか?

分類Dev

ループ内の複数の(並列)非同期関数呼び出しの累積結果を返すにはどうすればよいですか?

分類Dev

NodeJSのデータベースへの複数の非同期呼び出しの途中で応答を送信するにはどうすればよいですか?

分類Dev

C#で複数の非同期呼び出しを効率的に並行して実行するにはどうすればよいですか?

分類Dev

非同期関数を同時に呼び出してすべてのコールバックを待機するにはどうすればよいですか?

分類Dev

複数のAPI呼び出しを同時に非同期で起動するにはどうすればよいですか?

分類Dev

非同期メソッド呼び出しを使用して一連のif条件をDictionaryに変換するにはどうすればよいですか?

分類Dev

テストを実行する前に、XCTestでsetUpの非同期呼び出しを待機するにはどうすればよいですか?

分類Dev

Angularサービスで複数の非同期呼び出しの結果を返すにはどうすればよいですか?

分類Dev

非同期呼び出しを行う関数を実行する場合、ループを実行する場合、関数の残りの部分を実行する前に呼び出しを待機させるにはどうすればよいですか?

分類Dev

コールバックを使用して、複数の非同期ajax非同期呼び出しからのデータを操作するにはどうすればよいですか?

分類Dev

ループを使用して同じ非同期関数を複数回(同期的に)呼び出すにはどうすればよいですか?

分類Dev

複数の非同期呼び出しを行い、すべての呼び出しが完了した後に関数を実行するにはどうすればよいですか?

分類Dev

mochaを使用してreactjsでこの非同期メソッド呼び出しをテストするにはどうすればよいですか?

分類Dev

CPUの「最大化」を防ぐにはどうすればよいですか:複数のワーカーを非同期的に呼び出し、SemaphoreSlimを使用してスロットルする同期メソッド?

分類Dev

どの非同期CUDA呼び出しでどのCUDAエラーが発生するかを確認するにはどうすればよいですか?

分類Dev

角度のあるループで非同期呼び出しを使用するにはどうすればよいですか?

分類Dev

componentDidMountで2つの非同期メソッドを呼び出すにはどうすればよいですか?

分類Dev

`into()`への複数の呼び出しをチェーンするにはどうすればよいですか?

分類Dev

「未使用の式、期待される代入または関数呼び出し」の問題を解決するにはどうすればよいですか?

分類Dev

JavaScriptで正規表現を使用して関数呼び出しの文字列をテストするにはどうすればよいですか?

分類Dev

ajax呼び出しで非同期に機能し、完了するまでローダーを表示するにはどうすればよいですか?

分類Dev

文字列を取得して、関数を呼び出すための識別子として使用するにはどうすればよいですか?

分類Dev

ある非同期呼び出しで返されたaccessTokenを別の非同期呼び出しでどのように使用する必要がありますか?

分類Dev

(配列からの)複数の変数を別々のajax呼び出しで使用できるように、ajax呼び出しまたはpromiseチェーンを変更するにはどうすればよいですか?

分類Dev

RxJSを使用して複数のHTTP呼び出しを並列化するにはどうすればよいですか

分類Dev

jQuery ajax呼び出しで配列文字列を使用するにはどうすればよいですか?

分類Dev

Reduxで2つの連続した依存非同期呼び出しを処理するにはどうすればよいですか?

分類Dev

関数呼び出しのselectで行全体を使用するにはどうすればよいですか?

Related 関連記事

  1. 1

    Lambda関数がawaitで非同期関数の呼び出しを待機するようにするにはどうすればよいですか?

  2. 2

    ループ内の複数の(並列)非同期関数呼び出しの累積結果を返すにはどうすればよいですか?

  3. 3

    NodeJSのデータベースへの複数の非同期呼び出しの途中で応答を送信するにはどうすればよいですか?

  4. 4

    C#で複数の非同期呼び出しを効率的に並行して実行するにはどうすればよいですか?

  5. 5

    非同期関数を同時に呼び出してすべてのコールバックを待機するにはどうすればよいですか?

  6. 6

    複数のAPI呼び出しを同時に非同期で起動するにはどうすればよいですか?

  7. 7

    非同期メソッド呼び出しを使用して一連のif条件をDictionaryに変換するにはどうすればよいですか?

  8. 8

    テストを実行する前に、XCTestでsetUpの非同期呼び出しを待機するにはどうすればよいですか?

  9. 9

    Angularサービスで複数の非同期呼び出しの結果を返すにはどうすればよいですか?

  10. 10

    非同期呼び出しを行う関数を実行する場合、ループを実行する場合、関数の残りの部分を実行する前に呼び出しを待機させるにはどうすればよいですか?

  11. 11

    コールバックを使用して、複数の非同期ajax非同期呼び出しからのデータを操作するにはどうすればよいですか?

  12. 12

    ループを使用して同じ非同期関数を複数回(同期的に)呼び出すにはどうすればよいですか?

  13. 13

    複数の非同期呼び出しを行い、すべての呼び出しが完了した後に関数を実行するにはどうすればよいですか?

  14. 14

    mochaを使用してreactjsでこの非同期メソッド呼び出しをテストするにはどうすればよいですか?

  15. 15

    CPUの「最大化」を防ぐにはどうすればよいですか:複数のワーカーを非同期的に呼び出し、SemaphoreSlimを使用してスロットルする同期メソッド?

  16. 16

    どの非同期CUDA呼び出しでどのCUDAエラーが発生するかを確認するにはどうすればよいですか?

  17. 17

    角度のあるループで非同期呼び出しを使用するにはどうすればよいですか?

  18. 18

    componentDidMountで2つの非同期メソッドを呼び出すにはどうすればよいですか?

  19. 19

    `into()`への複数の呼び出しをチェーンするにはどうすればよいですか?

  20. 20

    「未使用の式、期待される代入または関数呼び出し」の問題を解決するにはどうすればよいですか?

  21. 21

    JavaScriptで正規表現を使用して関数呼び出しの文字列をテストするにはどうすればよいですか?

  22. 22

    ajax呼び出しで非同期に機能し、完了するまでローダーを表示するにはどうすればよいですか?

  23. 23

    文字列を取得して、関数を呼び出すための識別子として使用するにはどうすればよいですか?

  24. 24

    ある非同期呼び出しで返されたaccessTokenを別の非同期呼び出しでどのように使用する必要がありますか?

  25. 25

    (配列からの)複数の変数を別々のajax呼び出しで使用できるように、ajax呼び出しまたはpromiseチェーンを変更するにはどうすればよいですか?

  26. 26

    RxJSを使用して複数のHTTP呼び出しを並列化するにはどうすればよいですか

  27. 27

    jQuery ajax呼び出しで配列文字列を使用するにはどうすればよいですか?

  28. 28

    Reduxで2つの連続した依存非同期呼び出しを処理するにはどうすればよいですか?

  29. 29

    関数呼び出しのselectで行全体を使用するにはどうすればよいですか?

ホットタグ

アーカイブ