>  기사  >  웹 프론트엔드  >  JavaScript의 비동기 루프: for...of와 forEach

JavaScript의 비동기 루프: for...of와 forEach

PHPz
PHPz원래의
2024-08-29 10:33:21463검색

Async Loops in JavaScript: for...of vs forEach

JavaScript의 비동기 기능은 꽤 멋지지만 이러한 비동기 작업을 처리하기 위해 올바른 루프를 선택하면 큰 차이를 만들 수 있습니다. 재미있게 for...of와 forEach의 차이점을 분석해 볼까요?

1. for...of 비동기 함수가 있는 루프
for...of 루프가 다음 작업을 시작하기 전에 하나의 작업이 완료될 때까지 참을성 있게 기다리는 매우 부지런한 친구라고 상상해 보세요. 이는 다음 작업을 시작하기 전에 커피가 추출되기를 기다리는 것과 같습니다.

for (const item of items) {
  await doSomethingAsync(item);
}

각각 지연된 Promise를 반환하는 일련의 작업이 있다고 가정해 보겠습니다.

function doSomethingAsync(item) {
  return new Promise((resolve) => {
    setTimeout(() => resolve(`Processed ${item}`), 1000);
  });
}

async function processItemsSequentially(items) {
  for (const item of items) {
    try {
      const result = await doSomethingAsync(item);
      console.log(result);
    } catch (error) {
      console.error(`Oops! Error with ${item}:`, error);
    }
  }
}

const items = ['Task 1', 'Task 2', 'Task 3'];
processItemsSequentially(items);

processItems는 다음 항목으로 이동하기 전에 각 doSomethingAsync 호출이 완료될 때까지 순차적으로 기다립니다.

이 제품을 좋아하게 될 이유:

?️ 인내: 계속 진행하기 전에 각 비동기 작업이 완료될 때까지 기다립니다. 질서정연한 생활이 바로 그것입니다.

? 오류 처리: 루프 내에서 오류를 쉽게 포착하고 처리할 수 있습니다.

? 완벽한 용도: 반죽을 섞기 전에 케이크를 구울 수 없는 식사 요리와 같이 순서대로 작업해야 하는 경우 XD.


2. 비동기 기능을 갖춘 forEach
반면에 forEach는 동시에 작업을 시작하는 친구들과 같습니다. 그들은 신이 나고 가능한 한 빨리 끝내기를 원합니다. 한 사람이 다른 사람보다 먼저 끝내더라도 상관하지 않습니다. 그들은 단지 그것을 추구합니다!

items.forEach(async (item) => {
  await doSomethingAsync(item);
});

동일한 doSomethingAsync 함수를 forEach와 함께 사용해 보겠습니다.

async function processItemsConcurrently(items) {
  items.forEach(async (item) => {
    try {
      const result = await doSomethingAsync(item);
      console.log(result);
    } catch (error) {
      console.error(`Whoops! Issue with ${item}:`, error);
    }
  });
}

const items = ['Task A', 'Task B', 'Task C'];
processItemsConcurrently(items);

processItemsConcurrently는 모든 doSomethingAsync 호출을 동시에 시작하므로 모든 작업이 병렬로 실행됩니다.

재미있는 이유:

?‍♂️?‍♀️ 병렬 실행: 모든 작업이 한 번에 시작되므로 매우 빠르지만 약간 혼란스러울 수 있습니다.

✂️ 더 간단한 구문: for...of보다 더 짧고 더 간결한 경우가 많습니다.

? 완벽한 용도: 여러 API에서 데이터를 가져오는 것처럼 작업이 서로 의존하지 않고 독립적으로 수행될 수 있는 경우.

기억하세요:
for...of는 순서를 기다리는 질서정연한 친구입니다.
forEach는 동시에 시작하여 작업을 빠르게 완료하는 데 중점을 둡니다.

for...of는 오류를 하나씩 잡아낼 수 있어 깔끔하고 깔끔합니다.
forEach를 사용하면 여러 공을 저글링하는 것처럼 즉시 오류를 처리할 수 있습니다.

for...of는 조금 느릴 수도 있지만 깔끔하고 정돈되어 있습니다.
혼란스럽고 작업이 겹치지 않으면 forEach가 더 빨라질 수 있습니다.

질서와 인내심이 필요한지, 속도와 흥분이 필요한지 여부에 따라 필요에 맞는 루프를 선택하세요! ??

위 내용은 JavaScript의 비동기 루프: for...of와 forEach의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.