배경
Nodejs 비동기 프로그래밍 환경에서 정말 중요한 Promise가 헷갈려서 사부에게 도움을 청했다.
그래서 다음과 같은 코드를 받았다. 그리고 그 밑은 나의 해석.
핵심
Nodejs는 모든 scope에서 비동기적인 io 매커니즘을 가지고 있다.
Promise는 그 자체가 객체로서, resolve() 나 reject() 를 호출하게 하므로서, 함수 내의 모든 실행이 해결된 것을 나타낸다.
따라서, Promise객체의 return으로 동기적인 함수 실행을 이어나갈 수 있다.(콜백함수 효과)
Promise객체의 return이 없다면 뒤에 붙는 then자체는 사실상 의미가 없다.
NodeJS의 비동기 처리
tick이 달라지는 계기를 주는 이벤트가 생기면 그래야지 그것이 event loop에 들어가게 되고 나머지 같은 틱에 있는 처리들은 동기적으로 한다
그리고 같은 틱의 처리가 끝나면 event loop에 있는 것들도 마찬가지로 한다.
같은 틱에서는 동기적으로 프로그램이 동작하고
틱과 틱 사이에서도 동기적으로 프로그램이 동작한다.
one-tick에 같이 실행됨 -> 동기
one-tick에 실행이 안되고, event에 의해서 다른 tick에서 실행이 됨 -> 비동기
|
|
이 예에서는 콜백이어도 같은 틱에서 처리하니까 콜백을 먼저함 동기적으로
Promise 기본 내용
참고 내용
Callbacks, Promises, and Coroutines
- p.s 이 슬라이드는 35,36에 오류가 있다. 그 내용은 댓글에서 확인.
발전
|
|