TIL 2023.05.26

jomok·2023년 5월 26일
0
post-thumbnail

오늘 공부 계획 및 공부한 내용📝

  • 4주차(동기 작업, 비동기 작업) 공부 ㅇ

동기 & 비동기 개념

1) 동기 : synchronous
현재 실행중인 코드가 끝나야 다음 코드를 실행하는 방식

2) 비동기 : a + synchronous (⇒async라고 부름)
실행 중인 코드의 완료 여부와 무관하게 즉시 다음 코드로 넘어가는 방식

비동기 작업의 동기적 표현

: 비동기 작업은 순서를 보장하지 않지만 순서를 보장하는 것처럼 표현하는 게 필요하다.
그래서 나온 비동기 작업의 동기적 표현 => Promise, Generator(ES6), async/await(ES7)


문제🧐 / 해결과정⚒️

1) 이해하기 어려웠던 Promise, Generator, async/await 개념들...
특히나 제너레이터 함수!!

🤔--> 83번째 줄 시작부터 드는 의문.. coffeeGenerator함수를 굳이 coffeeMaker에 담아서
그 coffeeMaker에 next를 붙여야 했을까? 그냥 바로 커피제너레이터.next 는 안되는 것인가?

📌 복습하고 보니 Generator함수 개념을 완전히 무시한 질문이었음을 알았다 ㅎ

비동기 작업을 하려고 제너레이터 함수를 쓴 것이고(*가 붙은 함수는 제너레이터 함수)
제너레이터 함수는 실행하면, next()를 가진 Iterator 객체가 반환되는데(즉 coffeeMaker)
이 객체가 next 메서드로 순환 할 수 있기에
비동기 작업이 완료되는 시점마다 next 메서드를 호출해 Generator 함수 내부소스가
위 -> 아래 순차적으로 진행될 수 있는 것이다(=비동기 작업의 동기적 움직임...)!!

결론은 커피제너레이터도 커피메이커도 필요함.


2) 그 못지 않게 어려웠던 Promise 함수
핵심은 resolve가 실행되면 then으로 넘어간다..

🤔--> 비동기작업이 완료될 때 호출된 resolve 가 ()안에 인자를 넣어(위에서는 name)
그 다음 작업(.then이후)에 넘겨주는 데 왜 그 인자 이름을 name->prevName으로 바꿔버리는 것인지.. 이름 때문에 혼선이 생길 수 있어 구분하기 위해 그런다지만 이름이 바뀌면 아예 다른 인자로 되는 것이 아닌가?

📌 .then(콜백함수(인자)) —> 이 안에 들어가는 인자는 그 전단계 resolve ()안에 있던 인자가 들어가는 것이 규칙이기에 나는 몰라도 컴퓨터는 알고있음...! 그리고 .then으로 나눠진 각 과정마다 name과 prevName의 값도 계속 변함.


느낀점✨

  • 1~4주차까지 그 많은 강의들 중 최고봉이었다 4주차 !!!!!! 너무 어려워🔥
    동기들과의 폭풍 Q&A시간이 없었음 몇 시간은 더 머리를 싸매고 있지 않았을까...
    남은 5주차도 파이팅 해보자!!

0개의 댓글