Nodejsエラーで再帰呼び出しを行うと約束します

イブラヒム鳥
requestReport()
.then(getReportData)
.then(checkReportStatus)
.then(handleData)

checkReportStatus = (data) => {
    return new Promise((resolve, reject) => {
        if(data.status === 'completed')
            resolve(data)
        else {
            setTimeout(() => getReportData(), 1000)
        }

そのため、最初にレポートリクエストを行い、次にレポートが作成されたかどうかを確認する必要があります(ステータスは完了になります)。まだ完了していない場合は、getReportDataを再度呼び出す必要があります。しかし、私は本当に約束と混同しています。私のコードは実際には多くの行であり、約15のチェーンがあります。レポートが完了していない場合に呼び出しを行う正しい方法は何ですか。レポートが完了したときに、handleDataから続行できますか?

編集1:タイプミス

jfriend00

getReportData()データ(.then()チェーン内に表示されるで解決され、からの入力パラメーターを必要としないPromiseが返される場合requestReport()、次のようにすることができます。

// utility function that returns a promise that resolves after a delay
// useful for inserting a delay into a promise chain
function delay(t) {
    return new Promise(function(resolve) {
        setTimeout(resolve, t);
    });
}


requestReport()
  .then(getReportData)
  .then(checkReportStatus)
  .then(handleData)

function checkReportStatus(data) {
    if (data.status === 'completed') {
        return data;
    } else {
        // retry after a delay
        // add retry promise to the current promise chain
        return delay(1000).then(getReportData);
    }
}

requestReport()引数としての結果が必要な場合は、getReportData()その情報をPromiseチェーンに渡して、再試行でgetReportData()使用できるようにします。そのための最善の方法について具体的な推奨事項を提示するには、詳細(どのデータが返されrequestReport()、どのデータが必要かgetReportData())を表示する必要があります。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Javascript-再帰呼び出しで参照受け渡しを行おうとしています

分類Dev

チェーンは呼び出しを約束します

分類Dev

「Pythonオブジェクトの呼び出し中に最大再帰深度を超えました」というエラーが発生する

分類Dev

2つのAPI呼び出しではなく4つのAPI呼び出しをすべて行うことを約束する

分類Dev

forループから抜け出そうとしますが、ループに戻り、再帰呼び出しを実行し続けます

分類Dev

パラメータを使用した再帰呼び出しが行われると、スタックで何が起こりますか?

分類Dev

チェーンですぐに呼び出されることを約束しますか?

分類Dev

Behaviors.receive内で再帰呼び出しを行う方法は?

分類Dev

Forループは、再帰呼び出しの出力をパラメーターとして使用します

分類Dev

NETBSD 3.1エラー-malloc()で:警告:再帰呼び出し

分類Dev

ネストの約束:2つの約束の呼び出しを続けて行い、値を渡します

分類Dev

美しいスープとPython。「Pythonオブジェクトの呼び出し中に最大再帰深度を超えました」エラーが発生したため、再帰のあるすべてのノードを取得できません

分類Dev

Cコード:再帰呼び出しで引数として式を渡す

分類Dev

Javaで再帰呼び出しをトレースしますか?

分類Dev

再帰呼び出しを実装するメソッドを呼び出すことができません

分類Dev

クローラーに再帰呼び出しをさせるにはどうすればよいですか?

分類Dev

再帰ディレクトリでmkdirを約束します

分類Dev

進行中の非同期呼び出しの約束を返す

分類Dev

React / AxiosAPI呼び出しは約束を返します

分類Dev

ノードqは再帰を約束します

分類Dev

再帰を使用してvueリソースajax呼び出しを再試行します

分類Dev

要素をフォームでラップしてAJAX呼び出しを行うと、ページが再読み込みされます

分類Dev

再帰的なPython関数では、自分自身を呼び出すコード行の後に続くコード行にどのように到達しますか

分類Dev

約束エラーに巻き込まれなかったが、最初の呼び出しから結果を取得

分類Dev

約束を解決しようとすると、FirebaseAuthでエラーが発生します

分類Dev

テストでpromiseを呼び出すと、NodeJSでエラー400が発生します

分類Dev

遅延再帰呼び出しをコンパイラーで最適化できますか?

分類Dev

再帰的にjavascriptpromiseを使用してApi呼び出しを行う

分類Dev

forループの再帰呼び出しをどのように最適化できますか?

Related 関連記事

  1. 1

    Javascript-再帰呼び出しで参照受け渡しを行おうとしています

  2. 2

    チェーンは呼び出しを約束します

  3. 3

    「Pythonオブジェクトの呼び出し中に最大再帰深度を超えました」というエラーが発生する

  4. 4

    2つのAPI呼び出しではなく4つのAPI呼び出しをすべて行うことを約束する

  5. 5

    forループから抜け出そうとしますが、ループに戻り、再帰呼び出しを実行し続けます

  6. 6

    パラメータを使用した再帰呼び出しが行われると、スタックで何が起こりますか?

  7. 7

    チェーンですぐに呼び出されることを約束しますか?

  8. 8

    Behaviors.receive内で再帰呼び出しを行う方法は?

  9. 9

    Forループは、再帰呼び出しの出力をパラメーターとして使用します

  10. 10

    NETBSD 3.1エラー-malloc()で:警告:再帰呼び出し

  11. 11

    ネストの約束:2つの約束の呼び出しを続けて行い、値を渡します

  12. 12

    美しいスープとPython。「Pythonオブジェクトの呼び出し中に最大再帰深度を超えました」エラーが発生したため、再帰のあるすべてのノードを取得できません

  13. 13

    Cコード:再帰呼び出しで引数として式を渡す

  14. 14

    Javaで再帰呼び出しをトレースしますか?

  15. 15

    再帰呼び出しを実装するメソッドを呼び出すことができません

  16. 16

    クローラーに再帰呼び出しをさせるにはどうすればよいですか?

  17. 17

    再帰ディレクトリでmkdirを約束します

  18. 18

    進行中の非同期呼び出しの約束を返す

  19. 19

    React / AxiosAPI呼び出しは約束を返します

  20. 20

    ノードqは再帰を約束します

  21. 21

    再帰を使用してvueリソースajax呼び出しを再試行します

  22. 22

    要素をフォームでラップしてAJAX呼び出しを行うと、ページが再読み込みされます

  23. 23

    再帰的なPython関数では、自分自身を呼び出すコード行の後に続くコード行にどのように到達しますか

  24. 24

    約束エラーに巻き込まれなかったが、最初の呼び出しから結果を取得

  25. 25

    約束を解決しようとすると、FirebaseAuthでエラーが発生します

  26. 26

    テストでpromiseを呼び出すと、NodeJSでエラー400が発生します

  27. 27

    遅延再帰呼び出しをコンパイラーで最適化できますか?

  28. 28

    再帰的にjavascriptpromiseを使用してApi呼び出しを行う

  29. 29

    forループの再帰呼び出しをどのように最適化できますか?

ホットタグ

アーカイブ