2019-9-2 Promise와 Async Await의 관계
- async await에서 await하나는 promise의 then과 같은 의미를 지니고 있다.
function hello () {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('hello')
}, 1000)
})
}
function hi () {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('hi')
}, 1000)
})
}
// runP();
runAsync();
function runP () {
hello().then((data) => {
console.log(data) // hello
return hi()
}).then((data) => {
console.log(data) // hi
})
.catch(err => {console.error(err)})
}
async function runAsync () {
try {
const data = await hello(); // then;
console.log(data);
const d = await hi(); // then
console.log(d);
} catch (err) {
console.error(err);
}
}
- runP를 실행을 시키면, hello이 실행이 되고 그 다음에 hi가 실행이 된다. 이것이 Promise기반이기때문에 이해하기가 수비다.
- runAsync에서도 data가 먼저 찍히고 그 다음에 d가 출력디 된다. setTimeout의 시차를 발생시켜도 마찬가지다.
- async await에서 await끼리 잘 사용을 안해봤는데, 덕성님 덕분에 모를 수 있던 부분을 숙지했다.
Written on September 2, 2019