동기와 비동기

쥬씨후레시·2024년 1월 17일
0
post-thumbnail

동기와 비동기는 무엇일까?
동기와 비동기에 대해 다양한 자료를 서치해본 결과 이렇게 정의하기로 했다.

  • 동기 : 응답이 올때까지 다음 동작을 실행하지 않고 기다리는 것.
    실행-응답-실행-응답 순으로 동작한다.

  • 비동기 : 응답이 없어도 다음 동작을 실행하는 것.

오늘 푼 문제 중에 동기와 비동기를 다루는 내용이 있었다.
내 기준 어려웠던 문제라 까먹지 않기 위해 블로그에 남겨본다.

동기 함수와 비동기 함수를 각각 지시사항에 맞춰서 작성하는 문제였다.

incrementSync: function () {
     const currentTime = Date.now() 
    while(true) {
        const now = Date.now()  
        if (now - currentTime > 3000 ) break
    }
    this.count++
  },

  incrementAsync: function (callback) {
  setTimeout(() => {
      this.count++
      callback()
  },3000)
  },
};

특히 동기 함수 부분에서 Date.now 부분이 이해가 안됐는데, 처음에는 currentTime과 now의 값이 같은게 아닐까 라는 생각을 했다.

알고보니 currentTime은 incrementSync 함수의 동작이 시작된 시간을 뜻하고, now는 While 루프가 돌아갈 때마다 새로운 시간으로 업데이트 된다는 것이다.

그래서 -> 함수 시작된 시간-현재 루프가 시작된 시간이 3초보다 크면 true로 판단되고, while문을 벗어나 count가 1 증가되는 것이다.

while문은 루프가 돌아가고 있는 동안 다른 작업을 할 수 없다는 동기적인 특징을 가지고 있으며, setTimeout은 비동기적인 코드를 작성할 때 사용되는 기본적인 JavaScript 함수 중 하나이다.

각 요소들의 특성을 알고나니 이해하는데 도움이 되었다!

elice

#코딩독학 #코딩인강 #코딩배우기 #개발자 #코딩이란 #코딩교육 #프론트엔드부트캠프 #백엔드부트캠프 #국비지원부트캠프 #개발자 #백엔드 #AI부트캠프 #개발자국비지원 #백엔드개발자 #프론트엔드개발자
profile
수련 중🧘🏼‍♀️

0개의 댓글