[javascript] 객체 순회에서의 비동기 동작 처리하기

자바스크립트에서 객체를 순회하면서 각 속성에 대한 비동기 동작을 처리해야 할 때가 있습니다. 이런 상황에서는 일반적으로 for...in 루프나 Object.keys()를 사용하여 순회를 수행하고, 각 속성에 대해 비동기 동작을 수행할 수 있습니다.

for...in 루프를 사용한 비동기 동작 처리

for...in 루프를 사용하여 객체의 속성을 순회하는 예제는 다음과 같습니다.

const obj = {
  a: 1,
  b: 2,
  c: 3
};

for (const key in obj) {
  if (Object.hasOwnProperty.call(obj, key)) {
    // 비동기 동작 처리
    processData(obj[key]).then(result => {
      console.log(`${key}: ${result}`);
    });
  }
}

async function processData(value) {
  // 비동기 동작 처리 예시
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(value * 2);
    }, 1000);
  });
}

위 예제에서는 for...in 루프를 사용하여 객체의 각 속성을 순회하고, 각각의 속성에 대해 비동기 함수를 호출하고 그 결과를 처리하고 있습니다.

Object.keys()를 사용한 비동기 동작 처리

또 다른 방법으로는 Object.keys()를 사용하여 객체의 키 배열을 얻은 후에 이를 순회하면서 비동기 동작을 처리할 수 있습니다.

const obj = {
  a: 1,
  b: 2,
  c: 3
};

Object.keys(obj).forEach(async key => {
  // 비동기 동작 처리
  const result = await processData(obj[key]);
  console.log(`${key}: ${result}`);
});

async function processData(value) {
  // 비동기 동작 처리 예시
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(value * 2);
    }, 1000);
  });
}

위 예제에서는 Object.keys()를 사용하여 객체의 키 배열을 얻은 후 forEach 메서드를 사용하여 각 키에 대해 비동기 동작을 처리하고 있습니다.

결론

객체의 속성을 순회하면서 비동기 동작을 처리하는 것은 일반적인 요구사항입니다. for...in 루프나 Object.keys()를 사용하여 객체를 순회하며, 각 속성에 대한 비동기 동작을 처리할 수 있습니다.

참고 자료