출처들
https://studyingych.tistory.com/63
https://elvanov.com/2597
동기는 요청을 보낸 후 해당하는 응답을 받아야만 다음으로 넘어갈 수 있는 실행방식이고
반대로 비동기는 요청을 보낸 후에 응답과 관계없이 다음 동작을 실행할 수 있는 방식입니다.
비동기적 처리 방식 사용 하지 않는다면 콜백 함수의 과정이 끝나기 전에 다음 프로세스로 진행될 수 있다. 즉 비디오 파일을 불러오는 과정이 진행중인데 바로 출력을 실행하라하면 에러가 떨어질 것이다.
const video = 비디오 파일 불러오는중(...55%) -> 다음프로세스 실행 -> video 출력 -> 에러
비동기
promise / async,await로 비동기적 처리를 해준다.
모든 미들웨어는 동기처리가 된다. 따라서 모든 에러는 catch나 try catch로 받아줘야한다.
비동기적인 함수를 써서 try catch로 잡아주면? 그래도 에러 처리는 되지 않는다.
그러면 비동기 함수는 어떻게 에러를 잡아줘?
—> 함수 내부에서 처리 해줘야한다.
promise
.catch((error) => {res.sendStatus(404); //내부처리
또는
.catch(next) // 넘기기
await와 async는 동기처리가 분명 가능하지만 promise에서 파생된거기 때문에 애네도 똑같은 에러처리가 필요하다.

async await, await, await === promise then, then, then
근데 우리 이렇게 쓰지는 말자


promise 의 all은 실행은 바로 하되, 결과값을 원할때 꺼내쓸 수 있다.
promise 다음에 바로 then을 붙여서 결과값을 가져오는 습관 xxx
그렇게 하면 위에처럼 18초가 걸린다 (느려진다 성능저하)
그러니까, promise로 바로 실행 후(await Promise.all([p1,p2])) --> 두개가 동시에 실행됨, 결과값은 나중에 가져오도록 하자
