Concurrent Mode는 React 18에서 소개된 새로운 기능으로, 더 나은 사용자 경험을 제공하기 위해 병렬로 작업을 처리할 수 있는 능력을 갖춘 React 애플리케이션을 개발할 수 있도록 돕는다. 기존의 React 애플리케이션은 한 번에 하나씩 작업을 처리하는 방식이었지만, Concurrent Mode를 사용하면 애플리케이션 내에서 동시에 여러 작업을 처리할 수 있다. 이는 애플리케이션의 반응성을 향상시켜 느린 작업이 진행 중일 때에도 사용자가 다른 작업을 계속할 수 있도록 해준다.
자바스크립트 비동기 API 사용 방법
자바스크립트에는 비동기 작업을 처리하는 여러 가지 API가 있다. 이러한 비동기 API는 애플리케이션이 웹 서버와 통신하거나 파일을 읽고 쓰는 등의 작업을 비동기적으로 처리할 때 유용하다. 여기에서는 가장 일반적으로 사용되는 Promise와 async/await를 사용한 비동기 작업 처리 방법에 대해 알아보겠다.
Promise
Promise는 비동기 작업 결과를 나타내는 객체로, 애플리케이션이 비동기 작업을 시작하고 해당 작업이 완료되면 결과를 처리할 수 있다. Promise는 다음과 같은 문법으로 작성할 수 있다.
const promise = new Promise((resolve, reject) => {
// 비동기 작업
if (작업이 성공적으로 완료됐을 경우) {
resolve(결과);
} else {
reject(에러);
}
});
promise.then((결과) => {
// 성공적으로 완료됐을 경우의 처리 코드
}).catch((에러) => {
// 에러 발생 시의 처리 코드
});
async/await
async/await는 Promise를 더 쉽게 사용할 수 있도록 도와주는 문법이다. async 함수 안에서 비동기 작업을 수행하고, await 키워드를 사용하여 해당 작업이 완료될 때까지 기다릴 수 있다. async 함수는 항상 Promise를 반환하며, 결과를 처리하기 위해 .then()을 사용할 수 있다.
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
// 비동기 작업 결과 처리
} catch (error) {
// 에러 처리
}
}
fetchData().then(() => {
// 데이터 가져오기가 완료되었을 때의 처리 코드
}).catch((error) => {
// 에러 발생 시의 처리 코드
});
이처럼 Promise와 async/await를 사용하여 자바스크립트에서 비동기 작업을 처리할 수 있다. 이를 활용하여 React 애플리케이션을 개발하고, Concurrent Mode와 같이 사용하면 더욱 유연하고 반응성이 뛰어난 애플리케이션을 만들 수 있다.
참고 자료
- React 공식 문서
- JavaScript에서 비동기 프로그래밍
-
[Promise - JavaScript MDN](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise) -
[async function - JavaScript MDN](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/async_function)