错误返回时如何重试API调用?

时间:2016-11-30 08:14:12

标签: node.js api asynchronous repeat

我正在使用async.parallel

创建一个调用API的代码

但有时API(即我的代码中的cd.ChartData或ob.OrderBook)会返回错误。

在这种情况下,我想重复调用两个API,即使只有一个API返回错误。

怎么做?

async.parallel([
 function(callback){
    cd.ChartData(pair,end,days,function(ChartData){
     callback(null,ChartData);
  },
  function(callback){
    ob.OrderBook(pair, depth, function(OrderBook){
      callback(null,OrderBook);
    });
  }
],
  function(err, results){

})

module.exports.ChartData = function(pair, end, days, callback){

  request.get(url, function(error, response, body){
    if (error) {
      callback(error);
    } else {
      ChartData = JSON.parse(body);
      callback(ChartData);
    }
  });
};

1 个答案:

答案 0 :(得分:0)

我们可以使用递归函数。 ***请注意,当request.get出现错误时,此模式将导致函数无限循环,因此您可能希望限制重试次数。

//let's change your callback to standard Node.js callback format, callback(error, result)
//the first parameter to callback should always be null when there is no error but don't skip it
module.exports.ChartData = function(pair, end, days, callback) {
  request.get(url, function(error, response, body){
    if (error) {
      console.error(error);
      exports.ChartData(pair, end, days, callback); //keep trying if error occurs
    } else {
      ChartData = JSON.parse(body);
      callback(null, ChartData);
    }
  });
};