NodeJs

[javascript] paraller processing of async function list

개미맨 2019. 11. 5. 16:53

javascript에서 function을 비동기 적으로 처리하고자 하는 경우 예제.

runAsyncFuncList의 첫번째 인자의 요소수 만큼 uploadArtifact()가 호출 되며, param으로 인자 요소들을 순차적으로 받는다.

var shell = require('shelljs');

function delay(param) {
    return new Promise((resolve, reject) => setTimeout(() => { 
        console.log(param);
        // if(param === 2) {
        //     process.exit(1);
        //     resolve('failed'); 
        //     return;
        // }
        resolve('success');
    }, 500));
}

function uploadArtifact(param) {
    console.log('uploadArtifact : ', param);
    return new Promise((resolve, reject) => shell.exec('pwd', {async: true, silent : true}, (code, stdout, stderr) => {

        console.log('param : ', param);
        console.log('code : ', code);
        if(param === 9) {
            resolve('failed');
            console.log('failed!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
            return;
        }
        resolve('success');        
    }));
}
    
async function runAsyncFuncList(array, func) { 
    
    const promises = array.map(func);
    let resList = await Promise.all(promises);   
    console.log('resList : ', resList);
    console.log('check failed : ', resList.includes('failed'));
    
    setTimeout(() => { 
        console.log('time out 0.5sec');
    }, 500);
    
    console.log("Done!"); 
}   
    
runAsyncFuncList([1, 2, 3 ,4 ,5 ,6 ,7 ,8 ,9], uploadArtifact);

 

'NodeJs' 카테고리의 다른 글

[Nodejs] sudo와 node version 다른문제.  (0) 2020.10.27
[NodeJs] 우분투 nodejs 설치 & 삭제  (0) 2019.03.18