[nodejs] optimisation de script

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

je sais pas trop comment expliquer donc désolé d’avance si c’est pas très compréhensible.

Je ne savais pas comment expliquer le fonctionnement du script sans mettre le code donc voici :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
variable global items (array)
variable global prixSouhaité (integer)

fonction listen
    variable done = 0
    Boucler sur le tableau items
        Appel à une api pour l'élément items[i]
            Si response.prix est supérieur a prixSouhaité
                Ecriture dans un fichier
                Return (fin du script)
        Ajouter 1 a done
        Si variable done est égale a la taille de items
            On appel la fonction listen à nouveau

Globalement le script utilise une api pour écouter en temps réel des prix. Sur 148 éléments pour être exact. Actuellement il me faut entre 4s et 6s pour parcourir tous les éléments du tableau et tester leur prix.

Je cherche à optimiser un maximum cette fonction.

Merci

Édité par #VK

Tu fais des appels synchrones ou asynchrones vers ton API ?

Parce que tu ne devrais pas attendre qu’une requête soit terminée pour lancer la suivante, tu peux toutes les lancer en parallèle.

Qu’utilises-tu pour lancer une requête ? Si c’est async à base de callback, utilise async.map. Si c’est à base de promises, utilise Promise.all.

Le saviez-vous ? Chaque -1 que vous mettez vous fait gagner un point de QI.

+0 -0
Auteur du sujet

Hello hello,

les devs de l’api on accepté d’ajouter le prix quand on récupère la liste des produits donc maintenant c’est carrément rapide.

Par contre j’ai un souci, après avoir testé ceci: Si response.prix est supérieur a prixSouhaité j’appelle une fonction qui écris dans un fichier. Sauf que souvent elle est appelé deux fois malgré le return.

Comment je peux gérer ça ?

Ça dépend, je peux pas trop t’aider sans comprendre ton pseudo-code ci-dessus.

Le return il est censé être lié à listen ? Si oui, il semble plutôt être dans le callback de l’appel à l’API. Mais vraiment, là, je joue aux devinettes. Sans le code j’peux pas faire mieux.

Le saviez-vous ? Chaque -1 que vous mettez vous fait gagner un point de QI.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte