자바스크립트는 싱글 스레드 언어다(Single Threaded Language). 한 번에 한 개의 일만 처리할 수 있다는 뜻
언어 자체는 병렬처리(여러가지 일처리)가 불가능하지만 자바스크립트를 해석하고 실행하는 엔진 내부에서는 병렬 처리가 가능하다
(출처 https://techlog.io 자바스크립트 비동기통신 Callback, Promise, Async/Await 이해하기)
CallBack
, Promise
, Async/Await
가 있다.Promise
, Async/Await
을 정리해보고자 한다
제목 : 콜백지옥
약속해줘🎵
.then()
,.catch()
를 통하여 후속처리를 할 수 있다. 후속처리를 하면 선택적으로 콜백함수가 호출된다//callback 함수 생략
valueNumber(15, res => {
valueNumber(res, res => {
valueNumber(res, res => {
valueNumber(res, res => {
console.log(res)
})
})
})
})
//promise사용시
function valueNumber(num) {
return new Promise(resolve => setTimeout(() => resolve(num + 15), 100));
}
valueNumber(15)
.then(valueNumber) //valueNumber함수의 결과값은 Promise로 리턴함
.then(valueNumber)
.then(valueNumber)
.then((res) => console.log(res))
.catch()
메소드로 에러를 잡아낼 수 있다. (콜백은 if-else문으로 사용)valueNumber(15)
.then((res) => {
throw 'New Error';
})
.catch((error) => console.log(error));
.catch()
메서드를 사용할 수 있다try-catch
를 이용하여 에러를 잡을 수도 있다//catch() 이용시
async function examA() {
const value1 = await valueNumber(15).then(res => res);
const value2 = await valueNumber(value1).catch(error => error);
console.log(value1, value2)
}
examA();
//try-catch이용시
async function examB() {
try {
const value1 = await valueNumber(15)
const value2 = await valueNumber(value1)
console.log(value1, value2)
} catch(error) {
console.log(error)
}
}
examB();
출처: https://techlog.io/Javascript/General/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%B9%84%EB%8F%99%EA%B8%B0%ED%86%B5%EC%8B%A0-callback-promise-async-await-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/
https://springfall.cc/post/7
https://ryurim.tistory.com/137