2016-11-30 17 views
0

我正在調用使用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); 
    } 
    }); 
}; 
+0

請查看https://github.com/DoSomething/node-request-retry – xShirase

回答

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); 
    } 
    }); 
}; 
+0

謝謝您的回答。它確實有效! –

+0

還有一個...是否有可能在異步時重複所有API調用? –

相關問題