'처음 자바 클래스처럼 익숙하게 해야한다. 수첩에 접고 자주 접하고 보기. 망각 곡선'
자바스크립트는 비동기 언어다? 그러면 모든 코드가 비동기로 실행되나? 아니다.
자바스크립트 코드를 원래대로 위에서 부터 쭉 써나가면 순서대로 실행된다.
예를들어 1만줄을 실행하는 for문이 있다고해서 그 for문 블럭이 실행되는 동안 다음 코드가 실행되지 않는다.
for문이 끝난 후에 다음 코드가 실행된다.
그러면 자바스크립트가 비동기 언어라는 말은 "비동기를 사용 할 수 있는" 언어라는 말이다.
비동기를 사용할 수 있는 방법은 두가지가 있다.
첫번째는 콜백함수 사용
두번째는 Promise 내장객체 사용이다.
1.
콜백함수
콜백 뜻 : 답신, (필요한)답변 / 이제 callback 이 문자를 답변이라는 뜻으로 보자
call + back, 불러서 뒤돌아간다? 이딴거X
"답변이 필요한 함수"
=> 함수가 매개변수로 들어온다
Producer :
이부분(답변이 올 부분, callback 부분)은 반드시 답변(function)이 필요합니다.
Consumer:
답변(function)이 반드시 필요한 함수라서 답변(function)을 드립니다.
2.
Promise : resolve 값 리턴, reject 값 리턴
(1) state : pending -> fulfilled or rejected
(2) Producer VS Consumer
Producer
1) 값을 포장한 resolve와 reject를 리턴시킨다.
Consumer
1) then, catch, finally 사용.
2) 포장되었던 값을 사용한다. resolve값을 사용
then을 이용한 체이닝은 결과값(pending 결과, Promise 객체)에 대해서 then으로 이을 수 있다.
=> Promise 객체는 현재 비동기 상태에 대한 정보가 들어있는 객체다
=> Promise는 pending, fulfilled or rejected 등의 상태를 가질 수 있고
=> 각각의 상태에 따라서 정보를 가질 수 있다.
=> fulfilled 는 resolve 값 정보, rejected 는 reject 값 정보
참조:
https://www.youtube.com/watch?v=JB_yU6Oe2eE
'Knowledge > Node' 카테고리의 다른 글
[Node/Express] set/get, use 정리 (0) | 2022.03.29 |
---|---|
[Node] export & import / module.exports , exports & require( ) (0) | 2021.12.28 |
[Node] Object.create( ) 와 new 연산자의 차이 (0) | 2021.07.20 |
[Node] 배열 메소드 (forEach, map, filter, find, reduce) (0) | 2021.06.16 |
[Node] 콜백함수와 고차함수 (0) | 2020.11.26 |