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 :

child_process et async ?


Sujet :

NodeJS

  1. #1
    Futur Membre du Club
    child_process et async ?
    Bonjour, tout le monde
    Je ne trouve pas de solution pour lancer des commandes curl de facon asynchrone. je teste avec le module child_process mais sans resultats. Le script suivant me donne le reultat qui suit.

    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
    function sf_upload_file(token, project_name, upload_link) {
        return new Promise(async function(resolve, reject) {
            var exec = require('child_process').exec;
            var command_file_Rd= 'curl -H "Authorization: Token '+token+'" -F file=@./temp_projects/dataaa/'+project_name+'/man/'+project_name+'.Rd -F parent_dir="/'+project_name+'/" -F replace=1 "'+upload_link+'?ret-json=0"';
            console.log('avant');
            await exec(command_file_Rd, function(error, stdout, stderr) {
                    if (error !== null) {
                        console.log('exec error: ' + error);
                        reject('files_pb');
                    }
                    console.log(stdout);
                });
            console.log('apres');
            resolve('files_ok');
        });
    };


    avant
    apres
    files_ok
    [{"name": "test.Rd", "id": "e82630bd5fd0fb131ad6ebf18347db597274b60f", "size": 3195}]
    Alors que je souhaiterais
    avant
    [{"name": "test.Rd", "id": "e82630bd5fd0fb131ad6ebf18347db597274b60f", "size": 3195}]
    apres
    files_ok
    Si vous avez des idées pour m'aider je suis preneur.
    Merci pour votre aide
    Monlio

  2. #2
    Membre émérite
    Quelque chose comme ça pour s'inspirer ?
    Code nodejs :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
    23
    24
    25
    26
    function sf_upload_file(token, project_name, upload_link) {
        const exec = require('child_process').exec;
        let command_file_Rd= 'curl -H "Authorization: Token '+token+'" -F file=@./temp_projects/dataaa/'+project_name+'/man/'+project_name+'.Rd -F parent_dir="/'+project_name+'/" -F replace=1 "'+upload_link+'?ret-json=0"';
        return new Promise((resolve, reject) => {
            let msg='';
            exec(command_file_Rd, (error, stdout, stderr) => {
                if (error) {
                    msg='files_pb';
                    console.warn('exec error: ' + error);
                } else {
                    msg='files_ok';
                    console.log(stdout?stdout:stderr);
            });
            resolve(msg);
        });
    };
    
    (async() => {
        let token='abc-xyz';
        let project_name='project_name';
        let upload_link='https://my.upload_link';
        console.log('avant');
        const msg=await sf_upload_file(token, project_name, upload_link);
        console.log(msg);
        console.log('apres');
    })();