[완강 챌린지] 웹 프론트엔드를 위한 자바스크립트 첫 걸음 : section3-3. 비동기 처리

const job = '프론트엔드';·2023년 6월 25일
0
post-thumbnail

동기와 비동기

1. 동기

하나의 작업이 실행되는 동안 다른 작업을 동시에 수행하지 않는 방식

  • 하나의 작업이 종료될 때까지 다른 작업을 실행하지 못함
  • 앞선 작업이 끝나야 다음 작업을 할 수 있는 순차적인 방식
  • 동기적으로 작업을 처리한다면, 하나가 처리될 때까지 걸리는 시간을 기다려야 다음 작업을 순서대로 처리할 수 있음 (= 블로킹 방식)
  • 만약, 오래걸리는 작업을 먼저 처리해야 되는 경우 작업시간이 매우 길어진다는 단점이 있음

- 스레드(thread): 프로그램에서 작업을 처리하는 주체

  • 스레드를 여러개 만들어서 각각의 스레드마다 작업을 할당하고, 동시에 작업을 처리한다면? (= 멀티스레드)

  • 하지만, 자바스크립트는 오로지 싱글스레드만으로 작동이 가

2. 비동기

어떤 작업이 종료되길 기다리지 않고, 그 다음 작업도 동시에 진행

  • 하나의 스레드에서 여러개의 작업을 동시에 처리하는 방식(=논블로킹방식)

자바스크립트의 비동기 처리

setTimeout();

  • setTimeout의 매개변수로는 콜백함수와 delay time이 있음
  • delay time에 있는 시간만큼 기다렸다가 콜백함수를 실행시킴
  • 종료가 먼저 실행되고, setTimeout이 실행됨
  • 즉, setTimeout()이 실행되기를 기다리지 않고, 다음 실행해야 할 부분이 실행된 후 시간에 맞춰 setTimeout()이 실행됨

만약, setTimeout()의 콜백함수를 실행한 후 순서대로 "종료"를 실행하고 싶다면?

  • 콜백함수를 이용해 코드를 인수로 넣어줘야 함

비동기적 처리 예제

  • 이런식의 형태를 통해 함수 실행을 원하는 순서대로 조절이 가능 !
profile
`나는 ${job} 개발자`

0개의 댓글