読者です 読者をやめる 読者になる 読者になる

複数のgetリクエストを順に処理する

複数のgetリクエストを連続して実行する場合、非同期的に実行するとコールバックにばらばらに帰ってきてしまう。

getリクエストの結果を受け取った後に、次のリクエストを実行するようなロジックを探す必要があった。

 

下記を参照した

try catch and ...release: [Node.js] 複数のHTTPリクエストを同期的に行うサンプル

 

var urls = ["abc.com", "xyz.com"];

function execRequest(idx) {
    url = urls[idx];
    console.log("executing execRequest()... url:", url);

    // exec http request
    http.get(url, function(response) {
    if (response.statusCode == 200) {
        //ここに成功した時の処理を書く
    }

    // 次のリクエストを呼ぶ。
    // 全てのリクエストを実行し終えたら、コールバックを投げる。
    if (idx + 1 < length) {
        console.log(" execute execRequest() after 1000ms...");

        // execute the recursive function "execRequest()" after 1000 ms
        setTimeout(function() {
            execRequest(idx + 1);
        }, 1000);
    } else {
        return callback();
    }});
}

// fire the recursive function "execRequest()"
execRequest(0);