>  기사  >  웹 프론트엔드  >  비동기 JavaScript 마스터하기: 약속, Async/Await 및 콜백 설명

비동기 JavaScript 마스터하기: 약속, Async/Await 및 콜백 설명

Patricia Arquette
Patricia Arquette원래의
2024-11-10 07:08:02331검색

Mastering Asynchronous JavaScript: Promises, Async/Await, and Callbacks Explained

JavaScript는 다재다능하고 반응성이 뛰어납니다. 비동기식을 사용하는 방법을 아는 것이 가장 좋습니다. API 결과 가져오기부터 파일 로드까지 비동기 개발을 통해 차단 없이 한 번에 여러 작업을 수행할 수 있습니다. JavaScript로 비동기 코드를 작성하기 위한 세 가지 접근 방식인 Promise, Async/Await 및 Callback을 살펴보겠습니다. 각각의 사용 시기와 구현 방법을 이해합니다.

비동기 JavaScript를 사용하는 이유

API에서 데이터를 가져오거나 대용량 이미지 파일이 다운로드될 때까지 기다릴 때마다 웹 애플리케이션이 정지되는 상황을 상상해 보세요. 최선의 경우는 아니죠? 이것이 바로 비동기 JavaScript가 등장하는 곳입니다. 이를 통해 일부 작업이 완료될 때까지 기다리는 동안 프로그램이 계속 실행될 수 있으므로 훨씬 더 원활한 사용자 경험이 가능해집니다.

  1. 콜백 이해 콜백은 다른 함수에 인수로 전달되는 함수로, 비동기 작업이 완료되면 함수를 실행할 수 있게 해줍니다. 콜백은 JavaScript에서 비동기 작업을 처리하는 가장 오래된 기술 중 하나입니다.

예: 기본 콜백

함수 fetchData(콜백) {
setTimeout(() => {
console.log("데이터를 가져왔습니다");
콜백();
}, 2000);
}

함수 processData() {
console.log("데이터를 처리하는 중입니다.");
}

fetchData(프로세스데이터);
이 예에서 fetchData는 2초를 기다린 후 완료되면 processData를 호출합니다. 이는 간단한 시나리오에서는 괜찮지만 여러 개의 콜백을 쌓기 시작하면 깊게 중첩된 콜백으로 인해 코드를 읽고 유지하기 어렵게 만드는 "콜백 지옥"에 들어갈 수 있습니다.

팁: 중첩된 콜백이 3개 이상인 경우 Promise 또는 Async/Await로 전환하는 것을 고려해 보세요.

  1. 약속: 비동기를 처리하는 더 나은 방법 Promise는 비동기 작업의 최종 완료(또는 실패)를 나타내는 개체입니다. 중첩을 사용하는 대신 Promises는 .then() 및 .catch() 메서드를 제공하여 더 읽기 쉽습니다.

예: 약속 사용

함수 fetchData() {
return new Promise((해결, 거부) => {
setTimeout(() => {
해결("데이터를 성공적으로 가져왔습니다!");
}, 2000);
});
}

fetchData()
.then((메시지) => {
console.log(메시지);
return "데이터 처리 중";
})
.then((processingMessage) => {
console.log(processingMessage);
})
.catch((오류) => {
console.error("오류:", error);
});
여기서 각 .then()을 사용하면 작업을 순차적으로 처리할 수 있으므로 깊게 중첩된 콜백보다 읽기가 더 쉬울 수 있습니다. 또한 Promise는 오류를 더욱 우아하게 처리하고 .catch()를 사용하여 한 곳에서 오류를 처리할 수 있게 해줍니다.

팁: 이전 작업을 완료한 후 여러 작업을 순차적으로 실행해야 하는 경우 Promise를 적용하세요.

  1. 비동기/대기: 현대적인 접근 방식 Promise 작업을 위한 더욱 깔끔한 방법을 제공하는 Async 및 Wait 구문이 ES8에 나타났습니다. 동기 코드처럼 비동기 코드를 작성할 수 있으므로 읽기가 훨씬 쉽습니다.

예: 비동기/대기

비동기 함수 fetchData() {
시도해보세요 {
const 데이터 = 새로운 약속을 기다립니다((해결) =>
setTimeout(() =>solve("데이터를 성공적으로 가져왔습니다!"), 2000);
});
console.log(데이터);

const processMessage = await new Promise((resolve) => {
  setTimeout(() => resolve("Processing data."), 1000);
});
console.log(processMessage);

} 잡기(오류) {
console.error("오류:", error);
}
}

fetchData();
비동기 및 대기를 사용하면 코드가 동기 코드와 매우 유사해 보이도록 .then() 호출을 연결하지 않아도 됩니다. 이는 특히 관련된 작업이 복잡한 경우 가독성을 높이는 훌륭한 방법입니다.

모범 사례: 가독성이 높으므로 최신 JavaScript 애플리케이션에서 가능할 때마다 Async/Await를 사용하는 것이 항상 최선의 접근 방식입니다.

어디에 사용

콜백: 복잡하지 않고 가독성이 문제가 되지 않는 작은 작업에 사용합니다. 단순한 비동기 호출에는 거의 사용되지 않습니다.

약속: 오류 처리 및 순차적 프로세스에 완벽하게 적합합니다. Promise를 사용하면 콜백이 깊게 중첩되어 지저분한 코드를 피할 수 있습니다.

Async/ Await: 순서대로 작업을 수행할 때 가독성이 좋고 코드가 더 깔끔합니다.

비동기 JavaScript를 마스터하기 위한 최종 팁
각 방법을 시도해 보세요. 각 방법을 더 많이 연습할수록 비동기 프로그래밍을 더 잘 이해하고 언제 어떤 방법을 사용해야 하는지 더 잘 알 수 있습니다.

주의해서 오류 처리: Promise와 Async/Await 모두에서 .catch() 또는 try.catch를 사용하여 오류 처리를 사용합니다.

성능 최적화: 병렬로 실행할 수 있는 작업의 경우 Promise.all을 사용하여 병렬로 실행하세요.

깊이 알아볼 준비가 되셨나요? 프로젝트에 비동기 기술을 구현하여 차이점을 확인해보세요. 비동기 프로그래밍을 마스터하면 JavaScript 기술을 한 단계 더 발전시키고 매끄럽고 반응성이 뛰어난 애플리케이션을 만드는 데 도움이 됩니다.

위 내용은 비동기 JavaScript 마스터하기: 약속, Async/Await 및 콜백 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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