
점점 어려워지고 힘들어진다 ㅠㅠ 존버할수있을까??
비동기(Asynchronous)와 동기(Synchronous)는 프로그램의 동작 방식을 설명하는 데 사용되는 개념입니다.
이 두 용어는 작업의 진행과 관련된 시간적인 흐름을 나타냅니다.
예시 코드 _ 동기
console.log("첫 번째 작업");
console.log("두 번째 작업");
console.log("세 번째 작업");
// 결과: "첫 번째 작업", "두 번째 작업", "세 번째 작업" 순서대로 출력
예시 코드 _ 비동기
console.log("첫 번째 작업");
setTimeout(function() {
console.log("두 번째 작업");
}, 2000);
console.log("세 번째 작업");
// 결과: "첫 번째 작업", "세 번째 작업" 순서대로 출력
// 2초 후에 "두 번째 작업" 출력
예시 코드 ) 콜백 함수(Callback Functions)
function fetchData(callback) {
setTimeout(function() {
const data = "비동기 작업 결과";
callback(data);
}, 2000);
}
function handleData(data) {
console.log("데이터 처리:", data);
}
fetchData(handleData);
예시 코드 ) 프로미스(Promises)
function fetchData() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
const success = true;
if (success) {
const data = "비동기 작업 결과";
resolve(data);
} else {
reject("에러 발생");
}
}, 2000);
});
}
fetchData()
.then(function(data) {
console.log("데이터 처리:", data);
})
.catch(function(error) {
console.log("에러 발생:", error);
});
예시 코드 ) async/await
function fetchData() {
return new Promise(function(resolve) {
setTimeout(function() {
const data = "비동기 작업 결과";
resolve(data);
}, 2000);
});
}
async function handleData() {
const data = await fetchData();
console.log("데이터 처리:", data);
}
handleData();
추가 공부
Promise.all()
| 여러 개의 프로미스를 동시에 실행하고, 모든 프로미스가 성공적으로 처리될 때까지 기다린 다음, 각 프로미스의 결과를 배열로 반환하는 메서드입니다. 이를 통해 병렬로 여러 비동기 작업을 처리할 수 있습니다.
Promise.all()은 다음과 같은 구문을 가집니다:
Promise.all([promise1, promise2, ...])
.then(function(results) {
// 모든 프로미스가 성공적으로 처리된 경우
// results는 각 프로미스의 결과를 담은 배열
})
.catch(function(error) {
// 프로미스 중 하나라도 실패한 경우
// error는 실패한 프로미스의 에러를 담고 있음
});
Promise.all()의 사용법
function fetchData1() {
return new Promise(function(resolve) {
setTimeout(function() {
resolve("첫 번째 데이터");
}, 2000);
});
}
function fetchData2() {
return new Promise(function(resolve) {
setTimeout(function() {
resolve("두 번째 데이터");
}, 3000);
});
}
function fetchData3() {
return new Promise(function(resolve) {
setTimeout(function() {
resolve("세 번째 데이터");
}, 1000);
});
}
Promise.all([fetchData1(), fetchData2(), fetchData3()])
.then(function(results) {
console.log(results); // ["첫 번째 데이터", "두 번째 데이터", "세 번째 데이터"]
// 모든 프로미스가 성공적으로 처리된 경우, 결과를 담은 배열이 출력됨
})
.catch(function(error) {
console.log(error); // 프로미스 중 하나라도 실패한 경우, 실패한 프로미스의 에러 출력
});
Promise.all()은 여러 개의 프로미스를 동시에 실행하므로, 각 프로미스 간에 상호작용이 필요 없을 때 효과적입니다.
모든 프로미스의 처리가 완료될 때까지 기다리고 싶을 때 사용할 수 있습니다.
fetch함수 의사 코드 작성 과제
1. API 엔드포인트 및 요청 옵션 설정
2. fetch 함수를 사용하여 데이터 가져오기
2.1 fetch 함수로 요청 보내기
2.2 응답을 Promise 형태로 받기
2.3 응답의 성공 여부 확인
2.4 응답 데이터를 JSON 형태로 파싱하여 Promise 반환
3. 데이터 처리
3.1 Promise의 then 메서드 사용하여 데이터 접근
3.2 데이터 처리 및 활용
4. 오류 처리
4.1 Promise의 catch 메서드 사용하여 오류 처리
4.2 오류에 대한 예외 처리| [FE 45] _23.05.19 _ Day 28 (React SPA) (0) | 2023.05.19 |
|---|---|
| [FE 45] _23.05.18 _ Day 27 (React) (0) | 2023.05.18 |
| [FE 45] _23.05.16 _ Day 25 (JS_고차함수) (0) | 2023.05.16 |
| [FE 45] _23.05.15 _ Day 24 (JS_고차함수) (0) | 2023.05.15 |
| [FE 45] _23.05.12 _ Day 23 (JS_객체 지향 프로그래밍) (0) | 2023.05.12 |