비동기 함수에 대해서 배우는중.
Promise와 then, await가 나왔다
Promise는 콜백함수와 많이 비교되는듯 하다. 두 개 다 비동기적인 함수인데 콜백함수를 사용하게 되면 콜백지옥에 빠지는 경우가 있다. 콜백 지옥이란 콜백함수 여러개가 중첩되어 사용되면서 코드가 나빠지는 것이다.
(가독성이 우선 안좋고, 성능에 차이가 있는지는 아직 잘 모른다.)
콜백지옥을 피하기 위해서 Promise를 사용하는데
여러개의 함수를 붙이게 되더라도 코드가 같은 차원(?)에 있게 되어 가독성이 좋고 정비하기가 좋다고 한다.
doSomething()
.then(result => doSomethingElse(result))
.then(newResult => doThirdThing(newResult))
.then(finalResult => console.log(`Got the final result: ${finalResult}`))
.catch(failureCallback);
Promise를 사용하여 여러개의 함수를 붙이는 경우를 Promise chain 이라고 하는데 예외가 발생하는 경우 catch를 찾게된다(이걸로 erro처리를 할수 있다)
비동기 함수 여러개를 Promise를 사용하여 병렬로 실행시킬 수 있다
Promise.all([func1(), func2(), func3()])
.then(([result1, result2, result3]) => { /* use result1, result2 and result3 */ });
await는 문자그대로 기다리는 것을 의미. 비동기로 실행중인 Promise값을 기다렸다가 그 다음을 실행한다