반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 그리디알고리즘
- 프로그래머스
- 코테
- js
- 삼성
- mybatis
- 스텍
- AtoZ0403
- 삼성소프트웨어아카데미
- 백준
- 코테준비
- 중간 평균값 구하기
- 자료구조
- 자바
- NestJS
- 콜백지옥
- spring
- array
- 배열
- SWEA
- 정렬
- 카카오
- 알고리즘
- javascript
- 코딩테스트
- java
- stack
- 자바스크립트
- 인프런
- 코딩
Archives
- Today
- Total
개발에 AtoZ까지
[ES6][JS] Javascript 동기/비동기 처리(setTimeout) 1탄 본문
반응형
◆목표
동기/비동기 정의
비동기 처리 사용되는 곳
비동기 처리 사용법(SetTimeout)
비동기 처리의 문제점 및 해결방안
1. 동기 / 비동기 처리의 정의
- 동기적 처리
요청을 보낸 후, 해당 요청의 응답이 올 때까지 다른 작업을 하지 못하는 방식
즉, 코드 한줄 실행이 완료되어야지만 다음 줄 실행이 가능하다는 뜻
- 비동기적 처리
요청을 보낸 후, 해당 요청의 응답과 상관없이 다른 작업을 하는 방식
즉, 코드 한줄 실행 후 결과와 상관없이 다음 줄 실행한다는 뜻
2. 비동기 처리 사용되는 곳
- 보통 오래걸리는 기능들은 비동기적 방식으로 처리함
- Rest API 요청
- 파일/데이터베이스 처리
- 타이머, 암호화/복호 화등
3. 비동기 처리 사용법(setTimeout)
1) setTimeOut()
- 사용법: setTimeout( ms만큼 기다린 후 호출할 함수, ms(시간))
<input>
console.log(1);
setTimeout(() => {
console.log(2);
}, 3000);
console.log(3);
<output>
1
3
2
4. 비동기 처리의 문제점 및 해결방안(Callback function)
1) 문제점
Rest API를 호출해서 DB에서 받은 값에 +1 연산을 처리해야 하는 경우, DB에서 값을 받기도 전에 +1을 먼저 처리하는 문제점이 발생
<1 출력 후 2가 출력되게끔 하고 싶은데 2가 출력되고 1이 출력됨>
function fun1() {
setTimeout(() => {
console.log("1");
}, 1000);
}
function fun2() {
console.log("2");
}
fun1();
fun2();
2) 해결방안
CallBack Function(콜백 함수)를 활용해 DB에서 값을 받아야지만 연산을 처리 할수있도록 설정한다
function fun1(callback) {
setTimeout(() => {
console.log("1");
callback();
}, 1000);
}
function fun2() {
console.log("2");
}
fun1(fun2);
3) 콜백함수 사용 시 불편한 점
콜백 지옥을 초래할 수 있음(콜백 함수가 많이 생겨 코드의 가시성을 잃게 됨)
function fun1(callback) {
setTimeout(() => {
console.log("1");
setTimeout(() => {
console.log("2");
setTimeout(() => {
console.log("3");
callback();
}, 1000);
}, 1000);
}, 1000);
}
function fun2() {
console.log("4");
}
fun1(fun2);
반응형
'프론트엔드 > JAVASCRIPT' 카테고리의 다른 글
[ES6][JS] 함수 호출 및 Tagged Templates (1) | 2022.11.13 |
---|---|
[ES6][JS] DOM 객체 CRUD 하는 방법 (0) | 2021.02.06 |
[ES6][JS] DOM과 BOM (0) | 2021.02.05 |
[ES6][JS] Javascript Scope (0) | 2021.01.30 |
[ES6][JS] Javascript Hoisting 이슈와 해결법 (0) | 2021.01.27 |
[ES6][JS] Javascrip 기타 문법(삼항연산자,구조 분해 할당문법등) (0) | 2021.01.27 |
[ES6][JS] Javascript 배열 사용법과 관련 함수 (0) | 2021.01.27 |
Comments