J'utilise node-rest-client
pour faire un appel GET à un point de terminaison, et je voudrais faire cet appel plusieurs fois (en boucle), puis exposer un paramètre de la réponse.
Le code ressemble à:Noeud JS boucle et rappel
// registering remote methods
client.registerMethod("reflect", "<the URL>", "GET");
// call the method
var i = 10;
while (i>0) {
client.methods.reflect(function (data, response) {
console.log("x-forwarded-for: " + data.headers["x-forwarded-for"]);
// raw response
//console.log(response);
});
i--;
}
L'erreur que je reçois est:
TypeError: Cannot read property 'x-forwarded-for' of undefined
Si i
est égal à 2, alors c'est OK. Je suppose que le problème vient du fait qu'il s'agit d'une exécution asynchrone et que tous les appels dans le temps sont déclenchés à la fois, ce qui entraîne un colmatage quelque part le long des lignes.
Quelle est la meilleure façon d'avoir une exécution synchrone (en supposant que c'est là que réside le problème)?
possible duplication de [async for loop dans node.js] (http://stackoverflow.com/questions/21184340/async-for-loop-in-node-js) – DrakaSAN
Vous pouvez utiliser la bibliothèque de flux de contrôle comme 'async', ou utiliser récursivité pour le faire. Les promesses fonctionneraient aussi. – DrakaSAN
Merci - oui, juste vu ce qui, je crois, résout le problème: https://github.com/caolan/async/blob/v1.5.2/README.md#wholesale – Christian68