[node.js] 비동기 프로그래밍2 - Promise(all/race)

Hyo Kyun Lee·2021년 7월 26일
0

node.js

목록 보기
17/34

1. 비동기처리 간 Promise 함수사용의 유의점

Promise는 말 그대로 약속한다는 개념의 객체로, 사용자가 비동기 처리를 반드시 해야하는 상황이 올때 logic의 순차적인 실행을 보장(=약속)받기 위해 사용하는 가장 대표적인 비동기처리 함수이다.

비동기 처리 결과에 따라 대기 / 이행 / 실패 상태로 나뉘고,
Promise 객체는 이에 따라 비동기처리 결과반환(resolve) / 처리실패(reject) 의 결과를 반환한다.

resolve를 받아 data를 받아오거나, reject를 받아 예외(error)처리를 통해 logic을 재구성할 수 있게 된다.

2-1. Promise.all()

Promise 객체들이 모두 실행완료될 때까지 대기


"use strict";

//promiseall
//내부 promise들이 모두 완료될때까지 대기

const promise1 = new Promise((resolve, reject) => resolve("즉시 호출"));
const promise2 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve("3초뒤 호출");
  }, 3000);
});

Promise.all([promise1, promise2]).then((values) => console.log(values));

결과 : promise 변수 모두 출력(객체처럼 출력됨)

[ '즉시 호출', '3초뒤 호출' ]

2-2. Promise.race()

Promise 객체들 중 하나라도 실행이 완료되면 즉시 종료

"use strict";

const promise1 = new Promise((resolve, reject) => {
  setTimeout(() => resolve("1초뒤 호출"), 1000);
});

const promise2 = new Promise((resolve, reject) => {
  setTimeout(() => resolve("2초뒤 호출"), 2000);
});

Promise.race([promise1, promise2]).then((value) => console.log(value));

결과 : 가장 빨리 실행되는 promise 변수 출력(문자열 출력)

1초뒤 호출

3. 참조링크

https://joshua1988.github.io/web-development/javascript/promise-for-beginners/

4. remind

Not Sugar Syntax, but Sugar logic!

0개의 댓글