> 웹 프론트엔드 > JS 튜토리얼 > `async/await`를 사용하여 JavaScript에서 비동기 호출을 어떻게 병렬화할 수 있습니까?

`async/await`를 사용하여 JavaScript에서 비동기 호출을 어떻게 병렬화할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-11-27 17:28:14
원래의
261명이 탐색했습니다.

How Can I Parallelize Asynchronous Calls in JavaScript using `async/await`?

await를 사용하여 비동기 호출 병렬화

ES7에 도입된 async/await 구문을 사용할 때 여러 개의 wait 문이 실행된다는 점을 이해하는 것이 중요합니다. 병렬이 아닌 순차적으로. 즉, 한 함수 호출에서 결과를 기다리면 이전 호출이 완료될 때까지 실행이 일시 중지됩니다. 이를 방지하기 위한 몇 가지 옵션이 있습니다.

Node.js에서 가장 간단한 방법 중 하나는 Promise.all() 함수를 활용하는 것입니다. Promise.all()을 사용하면 제공된 모든 Promise가 해결될 때 해결되거나 그중 하나가 거부될 때 거부하는 단일 Promise를 생성할 수 있습니다. Promise.all()에 일련의 Promise를 전달하면 모든 Promise가 동시에 실행되도록 할 수 있습니다.

예는 다음과 같습니다.

const someCall = () => new Promise((resolve) => setTimeout(() => resolve("some value"), 100));
const anotherCall = () => new Promise((resolve) => setTimeout(() => resolve("another value"), 200));

await Promise.all([someCall(), anotherCall()])
  .then((results) => {
    const [someResult, anotherResult] = results;
    // Do something with the results.
  });
로그인 후 복사

이 예에서는 someCall() anotherCall()은 병렬로 실행되며 결과는 결과 배열에서 사용할 수 있습니다.

대체 접근 방식은 async를 사용하는 것입니다. 비동기 작업을 위한 추가 기능을 제공하는 라이브러리입니다. async.parallel() 함수를 사용하면 병렬로 실행할 함수 배열과 모든 함수가 완료된 후 호출할 콜백을 지정할 수 있습니다.

다음은 async.parallel()을 사용하는 예입니다.

const async = require("async");

const someCall = (callback) => setTimeout(() => callback(null, "some value"), 100);
const anotherCall = (callback) => setTimeout(() => callback(null, "another value"), 200);

async.parallel([someCall, anotherCall], (err, results) => {
  if (err) {
    // Handle any errors.
  } else {
    const [someResult, anotherResult] = results;
    // Do something with the results.
  }
});
로그인 후 복사

Promise.all()과 async.parallel()은 모두 비동기 함수를 병렬로 실행하기 위한 안정적인 방법을 제공합니다. 프로젝트 요구 사항 및 선호 사항에 가장 적합한 접근 방식을 선택하세요.

위 내용은 `async/await`를 사용하여 JavaScript에서 비동기 호출을 어떻게 병렬화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿