promise async/await
function asyncFunction(item, callback) {
setTimeout(function() {
console.log(`${item} 처리 완료`);
callback(null, `${item} 결과`);
}, Math.random() * 1000);
}
function processArray(array, finalCallback) {
const results = [];
let count = 0;
function iterate(index) {
if (index === array.length) {
finalCallback(null, results);
return;
}
asyncFunction(array[index], function(error, result) {
if (error) {
finalCallback(error);
return;
}
results.push(result);
iterate(index + 1);
});
}
iterate(0);
}
const inputArray = ['첫 번째', '두 번째', '세 번째'];
processArray(inputArray, function(error, results) {
if (error) {
console.error('에러 발생:', error);
return;
}
console.log('모든 비동기 함수 처리 완료');
console.log('결과:', results);
});
콜백지옥
function asyncFunction(item) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
console.log(`${item} 처리 완료`);
resolve(`${item} 결과`);
}, Math.random() * 1000);
});
}
async function processArray(array) {
const results = [];
// 배열 순회
for (const item of array) {
// 각 요소를 처리하고 결과를 기다림
const result = await asyncFunction(item);
// 결과를 배열에 추가
results.push(result);
}
// 배열 결과 반환
return results;
}
const inputArray = ['첫 번째', '두 번째', '세 번째'];
// 비동기 함수 호출 및 결과 처리
processArray(inputArray)
.then(function(results) {
// 모든 비동기 함수 처리 완료 후 결과 출력
console.log('모든 비동기 함수 처리 완료');
console.log('결과:', results);
})
.catch(function(error) {
// 에러 처리
console.error('에러 발생:', error);
});
반응형
댓글