JS - 비동기

김종민·2023년 3월 11일
0

JS 이벤트 루프

자바스크립트는 기본적으로 동기로 작동하며 콜스택에 쌓인다.
그러나 promise 및 setTimeout과 같이 비동기로 작동하는 코드들은 백그라운드로 넘겨지고
콜백큐에 쌓이고, 콜스택이 비어지면 순차적으로 콜스택으로 넘어간다.

Promise

  1. 프로미스는 쉽게 얘기하면 결과값을 나중에 원할 때 결과값을 사용할 수 있다.
  2. promise.all의 경우 하나의 promise만 에러가 발생하면 모두 작동이 중단된다는 단점이 있다.
  3. 이러한 단점을 해결하기 위해 promise.allSettled를 사용한다.
const a = axios.get()
const b = axios.get()
const c = axios.get()
const d = axios.get()

promise.all([a,b,c,d]).then((result)=>{}).catch((error)=>{})

promise.allSettled([a,b,c,d]).then((result)=>{}).catch((error)=>{})

promise.allSettled는 에러가 발생하지 않은 부분은 then에서 활용할 수 있다.

const p = new Promise((resolve,reject)=>{
    console.log("이 부분은 동기")
})
console.log("두번째")

new Promise의 함수는 동기로 작동한다.
따라서 위의 코드를 실행하면
"이 부분은 동기"
"두번쨰"
순으로 반환 받는다.

profile
개발을 합시다 :)

0개의 댓글