(위의 경우 promise 라는 변수에 결과를 들고 있다가 나중에 then 이나 catch 로 받을 수 있다.
resolve를 호출하면 then, reject를 호출하면 catch로 이동한다.)
(3초후에 실행되는 함수이지만 callback 함수는 항상 저자리에 들어가서 실행되어야 한다.)
(예를들어 위와 같이 promise 하게 하면 나중에 쓰고 싶을때 분리 해서 실행 가능하다는 장점이 있다. )
=> node 함수들도 callback 에서 promise 로 바뀌는 추세이다.
(callback 을 쓰면 위와 같이 한번 쓸 때 마다 안으로 들어간다.
이것을 promise 를 쓰면 아래와 같이 간단하게 표현 할 수 있다.)
(위와 달리 칸이 일정하게 유지된다. 위 코드는 나중에 더 간단하게 만들 수 있다.)
(추가로 Promise.allSettled 로 실패 한것만 추려내기도 가능하다.)
(처음 사진은 줄이기전 이후 사진은 async/await으로 줄인 것이다.
await이 then 역할을 한다고 보자
let user 의 변수에 then 과 같은 결과를 저장한다고 보면된다. 실행방향은 오른쪽 에서 왼쪽
예전에는 async function 과 await을 함께 서야했지만 요즘을 아래와 같이 await 만 쓰는 경우도 가능은 하다.)
(위와 같은 두 방법으로 name 변수에 main 함수의 리턴 값을 저장 할 수 있다. await 또는 then 을 써야한다.
async 도 결국 promise 이기 때문 )
(또한 async 는 promise이기는 해도 resolve는 해도 reject는 하지 못하기 때문에 필요한 경우 위와 같이 catch 문을 따로 작성해 줘야한다.)
(await이 then 이기 때문에 for 를 이용해 반복문을 돌릴 수 있다.)