NodeJS Async - 一部が失敗しても、複数の http リクエストの実行を継続する

KarthikJ

複数の HTTP リクエストを作成して蓄積し、次のコードを使用して NodeJS に結果を表示しようとしています。

const async = require('async');
const request = require('request');

function httpGet(url, callback) {
  const options = {
    url :  url,
    json : true
  };
  request(options,
    function(err, res, body) {
      console.log("invoked")
      callback(err, body);
    }
  ).on('error', function(err) {
    console.log(err)
  });
}

const urls= [
  "http://1.2.3.4:30500/status/health/summary",
  "http://5.6.7.8:30505/status/health/summary"
];

async.map(urls, httpGet, function (err, res){
  if (err)
    console.log(err);
  else
    console.log(res);
});

ここでの問題は、最初のリクエスト ( http://1.2.3.4:30500/status/health/summary ) が失敗した場合 (接続が拒否されたなど)、2 番目のリクエストが通過しないことです。ばかげた間違いをしていることはわかっていますが、それを見つけることができません。助けていただければ幸いです!

レナ・カプラン

async.map では、呼び出しの 1 つがそのコールバックにエラーを渡した場合、メインのコールバック (map 関数用) がエラーですぐに呼び出されます (これがこの場合の問題です)。最初のエラーで終了しないようにするには、httpGet で err param を使用してコールバックを呼び出さないでください。

async each を使用し、引数のリストと関数を受け取り、各要素で関数を呼び出します。エラー時に httpGet 内でコールバックを呼び出すようにしてください。一部の通話でエラーが発生しました。これは map でも機能しますが、あなたのケースに適した関数は map の代わりに async.each だと思います。また、eachLimit メソッドで同時呼び出しの数を制限することもできます。

https://caolan.github.io/async/docs.html#each を確認

const async = require('async');
const request = require('request');

function httpGet(url, callback) {
    const options = {
        url :  url,
        json : true
    };
    request(options,
        function(err, res, body) {
            if (err){
                console.log(err);
                callback();
                return;
            }
            console.log("invoked")
            callback(null, body);
        }
    ).on('error', function(err) {
        console.log(err);
        callback();
    });
}

const urls= [
    "http://1.2.3.4:30500/status/health/summary",
    "http://5.6.7.8:30505/status/health/summary"
];

async.each(urls, httpGet, function (err, res) {
}, function (err, res) {

});

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

HTTPリクエストを使用してnode.jsファイルを継続的に実行する

分類Dev

NodeJSが複数のhttpリクエストからデータを取得する

分類Dev

jdbcTemplateを使用して、一部のhttpリクエストが成功し、一部のhttpリクエストが失敗した場合にマイクロサービスをロールバックする方法

分類Dev

asyncでhttpリクエストを実行して待機することはできません

分類Dev

NodeJSのhttpリクエストからJSONを取得する

分類Dev

GusleがHTTPリクエストの実行に失敗する

分類Dev

nodejsのasync.each内で同期http呼び出しを行う方法

分類Dev

nodejsを使用してhttpポストリクエストを実行するときにエラーが発生しました

分類Dev

Nodejs Mongodbは、1回のhttp呼び出しで複数のクエリを実行します

分類Dev

nodejsの同じ接続内でクエリを実行する

分類Dev

複数のリクエストが連続して実行されるように、http.request()の結果を待って返す方法は?

分類Dev

NodeJs-async / await内のAsync / Await

分類Dev

nodejs async / await複数の関数の配置

分類Dev

nodejsでのPromisesとasync / await

分類Dev

Nodejsでのasync / await replace

分類Dev

同時リクエストをAsync / AwaitとともにNodeJSのAPIに制限する

分類Dev

ループ中のnodejs複数のhttpリクエスト

分類Dev

Async / Awaitを使用してpromiseベースのHTTPリクエストを作成する

分類Dev

Javaで同じソケット接続を使用して複数のhttpリクエストを実行するにはどうすればよいですか?

分類Dev

NodeJSで発信HTTP2リクエストを実行する

分類Dev

着信HTTPリクエストをテストするためのNodeJSライブラリ

分類Dev

NodeJSのループ内でHTTPリクエストを行うにはどうすればよいですか

分類Dev

AngularJS:特定の条件になるまで$ http.getリクエストを継続的に送信します

分類Dev

一部が失敗した場合でも、Mavenにすべてのテストを実行させる

分類Dev

nodejsを使用してphpフォームが行うようにhttpリクエストを作成します

分類Dev

NodeJS GET / POSTリクエストのエラー[ERR_HTTP_HEADERS_SENT]を解決する方法

分類Dev

1000を超えるHTTPリクエストタスクの実行に失敗する

分類Dev

Elm langで複数のHttpリクエスト(タスク)を一括で実行する方法

分類Dev

async / awaitを使用したmongodb接続-NodeJS

Related 関連記事

  1. 1

    HTTPリクエストを使用してnode.jsファイルを継続的に実行する

  2. 2

    NodeJSが複数のhttpリクエストからデータを取得する

  3. 3

    jdbcTemplateを使用して、一部のhttpリクエストが成功し、一部のhttpリクエストが失敗した場合にマイクロサービスをロールバックする方法

  4. 4

    asyncでhttpリクエストを実行して待機することはできません

  5. 5

    NodeJSのhttpリクエストからJSONを取得する

  6. 6

    GusleがHTTPリクエストの実行に失敗する

  7. 7

    nodejsのasync.each内で同期http呼び出しを行う方法

  8. 8

    nodejsを使用してhttpポストリクエストを実行するときにエラーが発生しました

  9. 9

    Nodejs Mongodbは、1回のhttp呼び出しで複数のクエリを実行します

  10. 10

    nodejsの同じ接続内でクエリを実行する

  11. 11

    複数のリクエストが連続して実行されるように、http.request()の結果を待って返す方法は?

  12. 12

    NodeJs-async / await内のAsync / Await

  13. 13

    nodejs async / await複数の関数の配置

  14. 14

    nodejsでのPromisesとasync / await

  15. 15

    Nodejsでのasync / await replace

  16. 16

    同時リクエストをAsync / AwaitとともにNodeJSのAPIに制限する

  17. 17

    ループ中のnodejs複数のhttpリクエスト

  18. 18

    Async / Awaitを使用してpromiseベースのHTTPリクエストを作成する

  19. 19

    Javaで同じソケット接続を使用して複数のhttpリクエストを実行するにはどうすればよいですか?

  20. 20

    NodeJSで発信HTTP2リクエストを実行する

  21. 21

    着信HTTPリクエストをテストするためのNodeJSライブラリ

  22. 22

    NodeJSのループ内でHTTPリクエストを行うにはどうすればよいですか

  23. 23

    AngularJS:特定の条件になるまで$ http.getリクエストを継続的に送信します

  24. 24

    一部が失敗した場合でも、Mavenにすべてのテストを実行させる

  25. 25

    nodejsを使用してphpフォームが行うようにhttpリクエストを作成します

  26. 26

    NodeJS GET / POSTリクエストのエラー[ERR_HTTP_HEADERS_SENT]を解決する方法

  27. 27

    1000を超えるHTTPリクエストタスクの実行に失敗する

  28. 28

    Elm langで複数のHttpリクエスト(タスク)を一括で実行する方法

  29. 29

    async / awaitを使用したmongodb接続-NodeJS

ホットタグ

アーカイブ