본문 바로가기
카테고리 없음

자바 스크립트 async promise

by 뽀도 2024. 3. 15.

 

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);
  });

 

 

 

반응형

댓글