J'ai un certain nombre de tickers dans un fichier JSON que je souhaite utiliser pour envoyer plusieurs demandes d'obtenir pour obtenir le prix de ce stock. Le problème que je vais avoir est de savoir comment les envoyer en parallèle et comment les résoudre.
Voici le code que j'ai essayé: p>
3 Réponses :
Vous devez vérifier s'il y a une erreur et seulement en ce moment, vous "rejeter" chaque réponse. p> p> rej code> s'il y a une erreur:
J'étais sous l'impression qu'une promesse n'a été rejetée que si demande code> a soulevé une erreur?
Je ne suis pas sûr de "Demande" mais en utilisant "Demande-promess-native", vous pouvez simplifier certaines choses comme celle-ci. Normalement, je m'abstiens de suggérer des changements de dépendance dans une réponse, mais dans ce cas, "demande-promesse-natif" est suggérée par les documents "Demande". Si vous envisagez d'utiliser des promesses, vous pouvez vouloir changer. Il est généralement préférable d'éviter de combiner des rappels et de promettre des chaînes. p> p>
Vous étiez sur le bon chemin avec votre code.
rej (err) code> s'il existe une erreur li>
- Vous ne devriez pas essayer de partager le même objet d'options avec toutes vos demandes (qui pourrait ou non causer des problèmes) li>
- Vous devez déclarer
promesses code> dans une portée plus élevée où il peut être utilisé avec promess.Tous (promesses) code>: li>
ol> Voici ce que cela ressemblerait après la réparation de ces problèmes: P>
const stocks = require('./stocks.json')
const rp = require("request-promise");
Promise.all(stocks.map(x => {
let options = {
method: 'GET',
url: 'https://www.stockopedia.com/ajax/get_prices/' + x.stockopediaTicker + '/'
};
return rp(options);
})).then(results => {
console.log(results);
}).catch(err => {
console.log(err);
});
Var Promises = [] Code> est défini dans une portée que
Promis.All code> n'a pas accès à. Essayez de définir
promesses code> en dehors du
foreach code>