당근개발자
당근당근
당근개발자
전체 방문자
오늘
어제
  • 분류 전체보기 (157)
    • codepresoo (13)
    • JAVA (1)
    • JS (12)
    • 코딩 테스트 (7)
    • Spring (21)
    • 자료구조 (4)
    • HTTP (7)
    • JSP (36)
    • Etc (21)
    • RESTful (11)
    • React (1)
    • k8s (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online.
  • queue#자료구조
  • #코드프레소. #codepresso #대외활동 # IT교육 #코딩강의 #코딩 이러닝 # 무료 IT교육 #무료 코딩교육
  • dobule_linked_list#java
  • S
  • HATEAOD
  • 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online
  • 이
  • thymleaf error#template might not exist
  • Primitive#Wrapper
  • @JsonFilter#당근개발자
  • 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수강하고있는강의명
  • thymleaf#layout#fragment#thymleaf layout 적용안됌
  • 코드프레소. #codepresso #대외활동 # IT교육 #코딩강의 #코딩 이러닝 # 무료 IT교육 #무료 코딩교육
  • stack#자료구조
  • 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
당근개발자

당근당근

JS

비동기 처리

2021. 10. 10. 18:43

비동기처리란?

-> 비동기처리란 특정 코드의 연산이 끝날때 까지 코드의 실행을 멈추지 않고 다른 코드를 먼저 실행하는 자바스크립트의 특성을 의미한다.

 

 

비동기 처리의 첫 번째 사례

 

- 비동기 처리의  가장 흔한 사례는 제이쿼리의 ajax입니다. 제이쿼리로 실제 웹 서비스를 개발할 때 

 

function getData() {
var tableData;
$.get('https://domain.com/products/1', function(response) {
tableData = response;
});
return tableData;
}

console.log(getData()); // undefined

 

위의 제리쿼리의 get을 사용해  url을 통해  response에 데이터를 받아오고 ,

그 데이터를 tablData 에 저장을 한다. return을 한다.

 

그리고 console.log를 찍어보면 undefined가 뜬다.

 

그 이유는 코드의 연산이 끝나기를 기다리지 않고 다른코드를 먼저 실행하는 비동기처리의 특징이기 때문이다.

 

 

비동기 처리의 두번째 사례

 

또 다른 비동기 처리 사례는 setTimeout()입니다.setTimeout()은 Web API의 한 종류이다.

코드를 바로 실행하지 않고, 지정한 시간만큼 기다렸다가 로직을 실행한다.

 

// #1
console.log('Hello');
// #2
setTimeout(function() {
console.log('Bye');
}, 3000);
// #3
console.log('Hello Again');

 

순서는

1 -> 3 -> 3초후 2

 

settimeout()도 비동기식으로 진행 되기 때문에, 다른 코드가 먼저 실행됩니다.

 

콜백 함수로 비동기 처리 방식의 문제점 해결하기

 

-> 앞에서 자바스크립트 처리 방식에 의해 야기될 수있는 문제들을 살펴보았는데,

이런한 문제들은, 콜백(call back) 함수를 이용하는것이다. 앞의 ajax코드를 콜백함수로 개선해보겠다.

 

function getData(callbackFunc) {
$.get('https://domain.com/products/1', function(response) {
callbackFunc(response); // 서버에서 받은 데이터 response를 callbackFunc() 함수에 넘겨줌
});
}

getData(function(tableData) {
console.log(tableData); // $.get()의 response 값이 tableData에 전달됨
});

 

위와 같이 코드를 작성하면 특정 로직이 끝났을때 원한느 동작을 실행 시킬 수 있다.

 

예시를 들자면

콜백 함수의 동작 방식은 일종의 식당 자리 예약과 같습니다. 일반적으로 맛집을 가면 사람이 많아 자리가 없습니다.

그래서 대기자 명단에 이름을 쓴 다음에 자리가 날때까지 주변 식당을 돌아다닌다. 만약 식당에서 자리가 생기면 전화로 자리가 났다고 연락이온다. 그 전화를 받는 시점이 여기서의 콜백함수가 호출되는 시점과 같다. 손님 입장에선느 자리가 날 때까지 식당에서 기다리지 않고,

근처 가게에서 있다가 올 수있습니다.

 

즉 자리가 준비 됏을 시점에, 갈 수있다는 점입니다.

'JS' 카테고리의 다른 글

JavaScript promise  (0) 2021.10.13
콜백함수(callback)  (0) 2021.10.13
상수(constant), 리털럴(literal)  (0) 2021.10.08
Javascript 이벤트 전파 중단 메서드  (0) 2021.10.07
addEventListener, onclick 비교  (0) 2021.10.06
    'JS' 카테고리의 다른 글
    • JavaScript promise
    • 콜백함수(callback)
    • 상수(constant), 리털럴(literal)
    • Javascript 이벤트 전파 중단 메서드
    당근개발자
    당근개발자

    티스토리툴바