Promises
function fetchData(url) {
return new Promise((resolve, reject) => {
fetch(url)
.then(response => {
if (response.ok) {
return response.json();
} else {
throw new Error('Network response was not ok');
}
})
.then(data => resolve(data))
.catch(error => reject(error));
});
}
fetchData('https://api.example.com/data')
.then(data => console.log(data))
.catch(error => console.error('Fetch error:', error));
async-await
async function fetchData(url) {
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error('Network response was not ok');
}
const data = await response.json();
return data;
} catch (error) {
console.error('Fetch error:', error);
throw error; // Rethrowing the error for the caller to handle
}
}
async function main() {
try {
const data = await fetchData('https://api.example.com/data');
console.log(data);
} catch (error) {
console.error('Unable to fetch data:', error);
}
}
main();
비동기
네트워크 요청, 지연 설정 또는 정기적인 코드 실행과 같은 작업에 매우 중요
Promises
.then()
Promise의 해결 또는 거부에 대한 콜백을 첨부.catch()
거부 처리(오류 시나리오)를 위한 콜백을 첨부.finally()
결과에 관계없이 Promise가 정산된 후 실행되는 콜백을 첨부// 생성
const myPromise = new Promise((resolve, reject) => {
if (/* condition */) {
resolve('Success');
} else {
reject('Error');
}
});
// 사용
myPromise
.then(result => console.log(result))
.catch(error => console.error(error));
setTimeout
setTimeout(() => {
console.log('This message is displayed after 2 seconds');
}, 2000);
setInterval
setInterval(() => {
console.log('This message is displayed every 3 seconds');
}, 3000);
fetch
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
async await
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error:', error);
}
}
Event Listener
RequestAnimationFrame (raf)
React 비동기 함수
useEffect
useEffect(() => {
fetchData().then(data => {
// Set state with fetched data
});
}, []);
비동기 상태 업데이트를 처리할 때 메모리 누수 및
경고를 방지하기 위해 상태를 업데이트
미들웨어(예: redux-thunk, redux-saga)와 함께 Redux와 같은
상태 관리 라이브러리를 사용하여 복잡한 비동기 논리 및 부작용을 처리