• 어떤 경우에 중첩된 callback이 발생하는지 이해할 수 있다.
- 정해야될 순서가 너무 많을때 비동기 처리 로직을 위해 콜백함수를 연속해서 사용할때 중첩된 callback으로 인해 가독성이 안좋아진다
• 중첩된 callback의 단점, Promise 의 장점을 이해할 수 있다.
- 중첩된 callback은 가독성이 좋지않고 callback 지옥에 빠질수있어서
그와 같은 단점을 해결하고 callback지옥에서 나올수있게 Promise를 사용한다
• Promise 사용 패턴과 언어적인 특징들을 이해할 수 있다.
New promise로 함수를 불러오고 resolved와 reject를 사용해준다
• resolve, reject의 의미와, then, catch와의 관계를 이해할 수 있다.
resolve가 실행되면 .then으로 받아오고
reject가 실행되면 .catch로 받아온다 (.then으로도 가능하지만 .catch가 효율적)getData().then( handleSuccess, handleError );
• Promise 에서 인자를 넘기는 방법에 대해 이해할 수 있다.
인자를 넘기는 방법으로 .then 과 .catch가 있다
• Promise의 세가지 상태를 이해할 수 있다.
대기(pending) 이행(fulfiled) 거부(rejected)
• Promise.all 의 사용법을 이해할 수 있다.
Promise.all(iterable)?
모든 프라미스가 이행될때까지 기다렸다가 그 결과값을 담은 배열을 반환하는 메서드
Promise.all은 언제 사용하는가?
여러개의 promise가 모두 resolve된 후, 다음 로직을 실행할때 경우 사용 /// 복수의 url에 요청을 보내고 모든 요청의 응답이올때 화면을 render해야하는 상황
요청에 필요한 정보를 배열로 저장해서 해당정보를 promise로 매핑
• async/await keyword에 대해 이해하고, 작동 원리를 이해할 수 있다.
async : 비동기
await : 기다리다
작동원리
1.function앞에 async 키워드를 붙인다
2.promise로 반환하는 것들 앞에 await을 붙인다
async/await에서 resolve에 인자를 넣어주면 해당 값이 awiat구문에 반환된다
실행예제
let num =0 const prom =() => new Promise(resolve => { setTimeout( ()=>{ console.log(`${++num}번째 실행`) resolve(num *5) },500) }); (async ()=>{ const num1 = await prom() console.log(num1) const num2 = await prom() console.log(num2) }) () ===>실행결과 Promise {<pending>} 1번째 실행 // 5 2번째 실행 // 10
node.js의 fs 모듈의 사용법을 이해한다.
비동기는 node.js의 핵심