일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 항해99후기
- java 자료구조 활용
- java기본자료형
- 격파르타후기
- 항해15기
- javaJVM
- java map
- 코딩부트캠프후기
- java list 저장
- java list 출력
- 격파르타장점
- java알고리즘
- 프로그래머스제일작은수
- 격파르타합격후기
- 프로그래머스
- java map 저장
- javaJRE
- 컴파일
- java참조자료형
- java set 저장
- 격파르타비전공자
- java최솟값구하기
- java알고리즘문제풀이
- 작은수제거하기
- sqld자격증합격
- 인터프린터언어
- 비전공자sqld
- java map 출력
- 노베이스부트캠프
- java set 출력
- Today
- Total
코딩과 결혼합니다
비동기 | async와 await 본문
✍동기, 비동기
동기란 어떠한 일을 맡겼을 때 그 것이 끝날 때까지 아무것도 하지 않고 기다린다. 때문에 그 사이에 다른 것을 할 수 없다.
비동기란 끝날 때까지 기다리지 않고 병렬로 다른 일을 할 수 있다. 하지만 의뢰한 일이 끝났는지 여부를 확인하고 싶으면 별도의 방법을 이용한다.
동기
console.log('Start');
const result = someFunction(); // 작업이 끝날 때까지 기다림
console.log('End'); // 위 작업이 끝난 후에 실행됨
비동기
console.log('Start');
setTimeout(() => {
console.log('This is async');
}, 1000);
console.log('End'); // "End"가 먼저 출력됨
NestJS에서 비동기 작업 처리
1. async와 await
async function asyncOperation() {
const result = await someAsyncFunction();
console.log(result);
}
비동기 작업을 처리하는 함수에서 'async'를 사용하고, 비동기 작업이 완료될 때까지 'await'로 기다릴 수 있다.
async : 함수가 비동기로 동작하도록 선언한다. 이 함수는 자동으로 Promise를 반환한다.
await : Promise가 해결될 때까지 함수 실행을 일시 중지하고, Promise가 완료되면 그 결과를 반환한다.
await의 동작 방식
1. await을 사용하면 비동기 작업이 완료될 때까지 해당 작업을 기다린다. 이 의미는 해당 작업이 완료될 때까지 함수 실행이 일시 중지된다는 뜻이다.
2. 하지만 이 대기동안 JS는 다른 작업을 계속 수행할 수 있다. 즉, 이벤트 루프는 다른 작업들을 처리한다. 예를 들어, 사용자의 입력을 처리하거나 다른 비동기 작업을 실행할 수 있다.
2. Promise
function promiseOperation(): Promise<any> {
return new Promise((resolve, reject) => {
// 비동기 작업
if (success) {
resolve(result);
} else {
reject(error);
}
});
}
비동기 작업의 결과를 promise로 반환하고 .then()과 .catch로 처리할 수 있다.
다른 비동기 방법들이 있지만 간단하게만 알아보고자 한다.
가장 일반적으로 사용되는 방법은 첫 번째 방법이고,
promise와 observable을 지원하여 다양한 비동기 작업을 유연하게 처리할 수 있다고 한다.
'2세 > Nest.js' 카테고리의 다른 글
Mongoose와 Spring JPA (0) | 2024.08.19 |
---|---|
몽고DB 스키마 인덱스 삭제하기 (0) | 2024.08.14 |
[오류] MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". | @nestjs/config (0) | 2024.08.13 |
[오류]Cannot find module '@nestjs/common' or its corresponding type declarations. (0) | 2024.08.12 |
04. [ 미들웨어 ] (0) | 2024.08.04 |