Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Fonction en arrière plan (asynchrone)


Sujet :

NodeJS

  1. #1
    Membre habitué
    Fonction en arrière plan (asynchrone)
    Bonjour,

    Je lance un ping sur une liste d'ordinateur, le problème est que ça attend d'avoir tout fini pour continuer le programme (j'ai beaucoup de chose encore à afficher). Je voudrais que les retours de pings se fassent de manière asynchrone (si j'ai bien compris le principe).

    Voici mon code avec une promise
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    function lesPing(){
        var listePC = document.getElementsByClassName("unPC");
        for (var n=0; n<listePC.length; n++){
            if (estUnPC(listePC[n].alt)){
                ping(listePC[n].id)
            }
        }
    }
     
    const ping = (id) => {
        return new Promise((resolve, reject) => {
            $.get('/getPing?hostname=' + id, function (reponsePing, status) {
                var d = reponsePing.split('\t');
                if (d[1] == "ok") {
                    document.getElementById("label " + d[0]).style.background = "#00FF00"
                } else {
                    document.getElementById("label " + d[0]).style.background = "#FF9090"
                }
            });
        })
    }


    Soit je ne maîtrise pas le principe (pourtant sur une autre procédure ça a résolut mon problème) soit ce n'est pas comme ça que je dois faire mais comment ?

    Si vous pouviez me guider ça serai super

    Par avance merci

  2. #2
    Membre expert
    le concept me semble correct, (je ne maitrise pas jquery (pour le get) )

    par contre, il faut que tu resolve() ou reject() une promesse (soit tu la valides avec resolve(), soit tu la rejettes avec reject() : les 2 parametres que tu passes a la new Promise)
    sinon, je pense qu'avec jquery, t'as une function callback de success non ?

    ps : t'as une erreur ? qu'est-ce qui se passe ?
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Membre habitué
    Bonjour,

    Merci pour ta réponse.

    J'ai testé avec un resolve mais rien n'a changé.

    Je n'ai aucune erreur, c'est juste qu'il attend d'avoir tous les pings pour continuer à afficher les autres informations et c'est long. Ce n'est pas ce que j'attends, le ping ne doit pas ralentir l'affichage (c'est une info en plus)

###raw>template_hook.ano_emploi###