0
votes

Comment résoudre plusieurs demandes d'obtention dans une utilisation de Nodejs

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é: xxx


1 commentaires

Var Promises = [] est défini dans une portée que Promis.All n'a pas accès à. Essayez de définir promesses en dehors du foreach


3 Réponses :


0
votes

Vous devez vérifier s'il y a une erreur et seulement rej s'il y a une erreur: xxx

en ce moment, vous "rejeter" chaque réponse.


1 commentaires

J'étais sous l'impression qu'une promesse n'a été rejetée que si demande a soulevé une erreur?



0
votes

Je ne suis pas sûr de "Demande" mais en utilisant "Demande-promess-native", vous pouvez simplifier certaines choses comme celle-ci. XXX

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.


0 commentaires

1
votes

Vous étiez sur le bon chemin avec votre code.

  1. Vous avez juste besoin de seulement appeler rej (err) code> s'il existe une erreur li>
  2. 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>
  3. 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);
    });
    


0 commentaires