FE코크
탄산 가득 시원한 개발일지
FE코크
전체 방문자
오늘
어제
  • 분류 전체보기 (43)
    • 우아한테크코스 (22)
      • 우아한테크코스4기 (4)
      • 우아한테크코스3 (10)
      • 회고록 (8)
    • Web (0)
      • HTTP 웹 기본지식 (0)
    • JavaScript (2)
    • React.js (12)
    • 알고리즘 풀이 (2)
    • HTML, CSS (4)
    • 기타 (1)
      • 일상 (0)
      • 후기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Props
  • 프리코스
  • CSS
  • 회고록
  • Reactjs
  • 우아한테크코스 3기
  • react.js
  • 4기
  • react
  • createRoot
  • 우아한테크코스
  • 프론트엔드
  • 노마드코더
  • prop drilling
  • state
  • 알고리즘
  • 우테코4기
  • 백준
  • 자바스크립트
  • 주간회고
  • 재택하고싶은데
  • 우테코
  • JavaScript
  • 레벨1회고
  • 회고
  • 개발자
  • React.DOM
  • jsx
  • 리액트
  • 코어자바스크립트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
FE코크

탄산 가득 시원한 개발일지

JavaScript

자바스크립트 비동기 처리

2022. 2. 18. 13:48

안녕하세요 우아한테크코스 4기 프론트엔드에서 시원한 콜라를 제공하고있습니다.


 

자바스크립트에서 비동기 처리에 사용되는 callback함수, Promise, async/await에 대해 간단히 알아본다.

동기식(Synchronous)? 비동기식(Asynchronous)?

  • 동기식은 작업 실행의 순서가 정해져 있어 순서대로 실행되는것을 말한다
console.log('1')
console.log('2')
console.log('3')

/* 출력
1
2
3
*/
  • 비동기식은 작업 실행의 순서에 상관없이 다음 순서의 작업이 실행되는것을 말한다.
console.log('1')

setTimeout(()=>{
	console.log('2')
},1000)

console.log('3')

/* 출력
1
3
2
*/

자바스크립트 비동기 처리

자바스크립트는 크게 3가지의 비동기 처리 방식을 가지고 있다.

  • callback 함수
  • Promise
  • Promise를 활용한 async/await

다음 예시를 보고 각 사용방식을 알아본다.

1. Callback 함수사용

  • callback 함수 미사용
const printAnimal = (animal) => {
	console.log(animal);
}

const callPrint = () => {
	let animal = 'dog';
	
	console.log(animal);

	setTimeout(() => {
		animal = 'cat';
	},1000);

	return animal;
}

printAnimal(callPrint());

/* 출력
dog
dog
*/
  • callback 함수 사용
const printAnimal = (animal) => {
	console.log(animal);
}

const callPrint = (callback) => {
	let animal = 'dog';
	
	console.log(animal);

	setTimeout(() => {
		animal = 'cat';
		callback(animal)
	},1000);

}

callPrint(printAnimal)

/* 출력
dog
(...1초 후)
cat
*/

2. Promise

const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('cat');
  }, 1000);
});

const printAnimal = () => {
  const animal = 'dog';

  console.log(animal);

  promise.then(newAnimal => {
    console.log(newAnimal);
  });
};

printAnimal();

/* 출력
dog
(...1초 후)
cat
*/

3. async/await

const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('cat');
  }, 1000);
});

const printAnimal = async() => {
  let animal = 'dog';

  console.log(animal);

	animal = await promise;
	console.log(animal);
};

printAnimal();

/* 출력
dog
(...1초 후)
cat
*/

 

'JavaScript' 카테고리의 다른 글

자바스크립트에서 객체 지향을 하는 게 맞나요?  (0) 2022.04.26
    'JavaScript' 카테고리의 다른 글
    • 자바스크립트에서 객체 지향을 하는 게 맞나요?
    FE코크
    FE코크
    공부한 내용을 적는 블로그

    티스토리툴바