[nodejs] optimisation de script

a marqué ce sujet comme résolu.

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

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.

+0 -0

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.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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