機能を再試行するにはどうすればよいですか?

フィーバーゴールド

私は個人的なニーズのためのスクリプトを開発しています。エラーが返された場合は再試行する必要がありますが、修正方法がわかりません。それを解決する方法は?

const request = require("request");
const co = require('co');


function init() {
  co(function *(){
    var res = yield GetData();
    console.log(res);
  });
}

function onerror(error) {
  console.log("error below");
  console.log(error);
  console.log(error.code);
  console.error(error.stack);
}

function send_request(options, callback){
  co(function *(){
    let RetryAttemptCount = 0;
    let MaxRetries = 3;

    let res;

    res = yield request(options, function (error, response, body) {
      var tmp;
      if (!body && error && !response) {
        RetryAttemptCount++;
        console.log('increase RetryAttemptCount :',RetryAttemptCount);
        throw new onerror(error);
      } else if (!error) {
        tmp = JSON.parse(body);
        return tmp;
      }
    });
  }).catch(onerror);
}

function GetData() {
  return new Promise(function(resolve, reject){
    var options = { method: 'GET', url: 'https://api.upbit.com/v1/market/all' };

    send_request(options, (res) => {
      resolve(res);
    });
  });
}

init();

しかし、次のエラーが発生します。

TypeError:関数、promise、generator、array、またはobjectのみを生成できますが、次のオブジェクトが渡されました: "[object Object]"

ベンジャミン・グリューンバウム

簡単な再試行機能を使用して、非常に一般的に行うことができます。

function retry(fn, attempts = 3, delay = 2000) {
   return async function(...args) {
     for(const i = 0; i < attempts; i++) {
       try {
         await fn.call(this, ...args); // delegate
       } catch (e) {
          if(attempts-- > 0) await new Promise(r => setTimeout(r, delay));
          else throw e;
       }
     }
   }
}

これにより、次のことが可能になります。

let retried = retry(fn);
// ... then later

await retried({ ... params });

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

AsyncHttpClientを使用して不正なhttpコードに再試行機能を実装するにはどうすればよいですか?

分類Dev

再試行関数の末尾再帰を作成するにはどうすればよいですか?

分類Dev

Pythonでユーザーの推測を追跡するにはどうすればよいですか?試行=試行+1が機能していません

分類Dev

中止されたSpannerコミットを再試行するにはどうすればよいですか?

分類Dev

試行錯誤せずにこの再帰を解決するにはどうすればよいですか

分類Dev

エラー時に内部監視のみを再試行するにはどうすればよいですか?

分類Dev

Kubernetesポッドで画像のプルを再試行するにはどうすればよいですか?

分類Dev

RabbitMQで再試行回数を設定するにはどうすればよいですか?

分類Dev

serverless.ymlでAWSLambdaの再試行回数を設定するにはどうすればよいですか?

分類Dev

Promiseで「再試行」をコーディングするにはどうすればよいですか?

分類Dev

失敗したテストを再試行するにはどうすればよいですか?

分類Dev

ビルドを「再試行」するにはどうすればよいですか?

分類Dev

Flutter StreamBuilderでエラー時に再試行するにはどうすればよいですか?

分類Dev

Scala Futureで安全に再試行するにはどうすればよいですか?

分類Dev

キャッチ後に再試行するにはどうすればよいですか?

分類Dev

chownを再帰的に機能させるにはどうすればよいですか?

分類Dev

この再帰ルールを機能させるにはどうすればよいですか?

分類Dev

メディアキーを再び機能させるにはどうすればよいですか?

分類Dev

テストアノテーションの追加を再試行しないようにするにはどうすればよいですか?

分類Dev

DataTablesに機能を追加するにはどうすればよいですか?

分類Dev

NServiceBusが例外をスローしなかったメッセージを再試行するのを停止するにはどうすればよいですか?

分類Dev

UIを介してGitLabでパイプライン(個々のジョブではない)を再試行するにはどうすればよいですか?

分類Dev

しばらくして特定の機能を実行するにはどうすればよいですか?

分類Dev

他のスレッドからのQt同時再帰実行機能を停止するにはどうすればよいですか?

分類Dev

他の機能を使用せずにGroupByを実行するにはどうすればよいですか?

分類Dev

結果が得られるまでIOを永続的に再試行するにはどうすればよいですか?

分類Dev

「一時停止」コマンドを発行した後、端末機能を再開するにはどうすればよいですか?

分類Dev

「一時停止」コマンドを発行した後、端末機能を再開するにはどうすればよいですか?

分類Dev

Javaでこれを行うにはどうすればよいですか?(機能と機能)

Related 関連記事

  1. 1

    AsyncHttpClientを使用して不正なhttpコードに再試行機能を実装するにはどうすればよいですか?

  2. 2

    再試行関数の末尾再帰を作成するにはどうすればよいですか?

  3. 3

    Pythonでユーザーの推測を追跡するにはどうすればよいですか?試行=試行+1が機能していません

  4. 4

    中止されたSpannerコミットを再試行するにはどうすればよいですか?

  5. 5

    試行錯誤せずにこの再帰を解決するにはどうすればよいですか

  6. 6

    エラー時に内部監視のみを再試行するにはどうすればよいですか?

  7. 7

    Kubernetesポッドで画像のプルを再試行するにはどうすればよいですか?

  8. 8

    RabbitMQで再試行回数を設定するにはどうすればよいですか?

  9. 9

    serverless.ymlでAWSLambdaの再試行回数を設定するにはどうすればよいですか?

  10. 10

    Promiseで「再試行」をコーディングするにはどうすればよいですか?

  11. 11

    失敗したテストを再試行するにはどうすればよいですか?

  12. 12

    ビルドを「再試行」するにはどうすればよいですか?

  13. 13

    Flutter StreamBuilderでエラー時に再試行するにはどうすればよいですか?

  14. 14

    Scala Futureで安全に再試行するにはどうすればよいですか?

  15. 15

    キャッチ後に再試行するにはどうすればよいですか?

  16. 16

    chownを再帰的に機能させるにはどうすればよいですか?

  17. 17

    この再帰ルールを機能させるにはどうすればよいですか?

  18. 18

    メディアキーを再び機能させるにはどうすればよいですか?

  19. 19

    テストアノテーションの追加を再試行しないようにするにはどうすればよいですか?

  20. 20

    DataTablesに機能を追加するにはどうすればよいですか?

  21. 21

    NServiceBusが例外をスローしなかったメッセージを再試行するのを停止するにはどうすればよいですか?

  22. 22

    UIを介してGitLabでパイプライン(個々のジョブではない)を再試行するにはどうすればよいですか?

  23. 23

    しばらくして特定の機能を実行するにはどうすればよいですか?

  24. 24

    他のスレッドからのQt同時再帰実行機能を停止するにはどうすればよいですか?

  25. 25

    他の機能を使用せずにGroupByを実行するにはどうすればよいですか?

  26. 26

    結果が得られるまでIOを永続的に再試行するにはどうすればよいですか?

  27. 27

    「一時停止」コマンドを発行した後、端末機能を再開するにはどうすればよいですか?

  28. 28

    「一時停止」コマンドを発行した後、端末機能を再開するにはどうすればよいですか?

  29. 29

    Javaでこれを行うにはどうすればよいですか?(機能と機能)

ホットタグ

アーカイブ