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 |