JavaScript : Asynchronous 비동기

JavaScript : Asynchronous 비동기

JavaScript : Asynchronous 비동기

JavaScript 엔진은 Single Thread -> 두 가지 작업을 동시에 하지 못함

- 동기 vs 비동기

- 동기적 처리(Synchronous) : 작업을 요청함과 동시에 작업의 결과를 그 자리에서 받음

- 비동기적 처리(Asynchronous) : 작업을 요청하지만 결과는 그 자리에서 꼭 받지 않아도 되는 처리 방식

- "비동기 처리"

- 비동기로 일어나는 일을 동기적으로 처리하는 방법

function logicA() { console.log("begin LogicA"); setTimeout(() => { console.log("callbackA called"); console.log("bagin LogicB"); setTimeout(() => { console.log("callbackB called"); }, 2000); console.log("end logicB"); }, 2000); // 2초 후에 콜백 함수 수행 console.log("end LogicA"); }

begin LogicA

end LogicA

callbackA called

bagin LogicB

end logicB

callbackB called

여러 비동기 로직이 의존 관계에 있을 때, 콜백 지옥(Callback Hell)에 빠질 우려가 있다

Promise의 세 가지 상태

- Pending(대기) : 비동기 처리 로직이 아직 완료되지 않을 상태

- Fulfilled(이행) : 비동기 처리가 완료되어 프로미스가 결과 값을 반환해준 상태

- Rejected(실패) : 비동기 처리가 실패하거나 오류가 발생한 상태

Pending(대기)

new Promise();

Promise를 생성할 때, 콜백함수(실행자:Executor)를 선언할 수 있음

 콜백 함수의 인자는

resolve, reject

콜백으로 전달된 두 개의 인자로 이행(Fulfilled), 실패(rejected) 단계로 전달할 수 있음

Executor는 resolve나 reject 중 하나를 반드시 호출해야 한다

from http://jaemin-lim.tistory.com/71 by ccl(A) rewrite - 2021-09-10 11:27:22