1. ホーム
  2. node.js

[解決済み] 連続した順序でリクエストを行う Node.js

2022-12-06 05:02:58

質問

3つのhttp APIを順番に呼び出す必要がある場合、以下のコードに代わるより良い方法は何でしょうか。

http.get({ host: 'www.example.com', path: '/api_1.php' }, function(res) { 
  res.on('data', function(d) { 

    http.get({ host: 'www.example.com', path: '/api_2.php' }, function(res) { 
      res.on('data', function(d) { 

        http.get({ host: 'www.example.com', path: '/api_3.php' }, function(res) { 
          res.on('data', function(d) { 


          });
        });
        }
      });
    });
    }
  });
});
}

どのように解決するのですか?

のようなディファレンシャルを使用する。 Futures .

var sequence = Futures.sequence();

sequence
  .then(function(next) {
     http.get({}, next);
  })
  .then(function(next, res) {
     res.on("data", next);
  })
  .then(function(next, d) {
     http.get({}, next);
  })
  .then(function(next, res) {
    ...
  })

スコープを渡す必要がある場合は、次のようにします。

  .then(function(next, d) {
    http.get({}, function(res) {
      next(res, d);
    });
  })
  .then(function(next, res, d) { })
    ...
  })