je suis en train de faire plusieurs requêtes HTTP et cumulat, afficher les résultats dans NodeJS en utilisant le code suivant:NodeJS Async - Poursuivre l'exécution de plusieurs requêtes http même si certains ne
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);
});
Le problème ici est, si la première demande (http://1.2.3.4:30500/status/health/summary) échoue (comme connexion refusée, etc.), la seconde ne passe pas par. Je sais que je commets une erreur idiote mais je ne la trouve pas. Toute aide appréciée!
Je pense que cela se produit parce que 'request' est synchrone. S'il vous plaît jeter un oeil https://www.npmjs.com/package/request-promise – hisener
pourquoi ne pas u utilisé 'async.series'? sur le premier succès à pour l'autre. @hisener a raison. La fonction de demande est sync. –
'request' _n'est pas synchrone! La sémantique de 'async.map()' est telle que lorsqu'une erreur survient, le callback final est appelé immédiatement. – robertklep