20240508 동기와 비동기 그 사이 어딘가

RingKim1·2024년 5월 8일

TIL

목록 보기
15/77
post-thumbnail

Today

1. 문자열 메서드

2. 동기/비동기 & 블로킹/논블로킹

동기와 비동기의 차이

동기(Synchronous): 작업이 순차적으로 실행되며, 이전 작업이 완료되어야 다음 작업이 실행
비동기(Asynchronous): 작업이 병렬적으로 실행되며, 이전 작업이 완료되지 않아도 다음 작업이 실행

블로킹과 논블로킹의 차이

블로킹(Blocking): 작업이 완료될 때까지 프로그램의 실행이 멈춤
논블로킹(Non-blocking): 작업이 완료되지 않아도 프로그램의 실행이 계속됨

동기/비동기와 블로킹/논블로킹의 조합

  1. 동기 + 블로킹: 작업이 순차적으로 실행되며, 이전 작업이 완료되어야 다음 작업이 실행됩니다.
  2. 동기 + 논블로킹: 작업이 순차적으로 실행되지만, 이전 작업이 완료되지 않아도 다음 작업이 실행됩니다.
  3. 비동기 + 블로킹: 작업이 병렬적으로 실행되지만, 이전 작업이 완료되어야 다음 작업이 실행됩니다.
  4. 비동기 + 논블로킹: 작업이 병렬적으로 실행되며, 이전 작업이 완료되지 않아도 다음 작업이 실행됩니다.

Learn

async await이 잘 모르겠어서 이것저것 보다가
동기, 비동기의 개념으로 올라갔다.
개념은 이해가 가는데
프로그래밍적으로 어떨때 쓰고 싶은지 잘 모르겠다..
아직 이해를 못한건가?

간단한 정리

JavaScript는 단일 스레드 언어이기 때문에 동기 코드는 순차적으로 실행되지만, 비동기 코드는 콜백 함수를 사용해야 함
=> 콜백 지옥 문제 발생
=> 해결책

ES6 promise 객체

비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냄
[mdn]

즉, 비동기 작업을 처리하기 위해 사용되는 객체
Promise는 비동기 작업의 최종 완료 또는 실패를 나타내는 객체로, 작업의 결과를 값으로 받아 처리

  • 상태
    1. 대기(pending): 비동기 작업이 완료되지 않은 초기 상태
    2. 이행(fulfilled): 비동기 작업이 성공적으로 완료된 상태
    3. 거부(rejected): 비동기 작업이 실패한 상태
  • 메서드
    1. then(): 비동기 작업이 성공적으로 완료되었을 때 호출되는 메서드
    2. catch(): 비동기 작업이 실패했을 때 호출되는 메서드
    3. finally(): 비동기 작업의 성공 여부와 관계없이 항상 호출되는 메서드

promise 장점

  • 비동기 처리 개선
  • 동기적 처리 가능
  • 에러 처리 용이
  • 체이닝 가능
    then, catch, finally 메서드를 통해 연결(chaining)할 수 있어 비동기 작업을 순차적으로 처리할 수 있음

ES7 async / await

컴퓨터 프로그래밍에서 async/await 패턴은 비동기, 비차단 기능이 일반 동기 기능과 유사한 방식으로 구조화되도록 하는 많은 프로그래밍 언어의 구문 기능 구현
wiki

async/await의 장점

  • 콜백 지옥 해결
  • 가독성 향상
  • 오류처리 간소화
  • 코드 직관성 향상(코드를 더욱 직관적으로 작성 할 수 있음)

우선적으로 코드에 대한 숙달이 먼저 이뤄져야하겠다.


참고 자료
👩‍💻 완벽히 이해하는 동기/비동기 & 블로킹/논블로킹


주절주절

오늘은 밖에서 조금 뛰어야 겠다.

profile
커피는 콜드브루

0개의 댓글