javascript

[javascript] 프로미스 메소드 / JS 추가된 기능

미 성 2024. 3. 21. 00:49

 
안녕하세요 ! 오늘은 따로 포스팅한 적이 없어 이번 기회에 소개드리는 3가지 프로미스 메소드와, 더하여 js의 추가된 기능 몇 가지까지 간단히 살펴보는 시간을 가지겠습니다.
 


 
 
목차 🛸
 
1. String.replaceAll()
2. Promise.any() 
3. Promise.all() 
4. Promise.race()
5. javascript에서 큰 숫자를 적을 때 꿀팁
6. "??" 연산자
 
 


 
 
String.replaceAll
 
 
: replaceAll 은 String 객체에 새로 추가된 메소드입니다 ! 직관적으로 특정 문자열을 원하는 문자열로 바꿀 수 있게 해 주는 메소드인데요, 아래 코드를 보시면 어떤 식으로 동작하는지 바로 이해가 되실 겁니다.
 

 
 
 
 


 
 
 
-  여러 개의 프로미스들을 배열 형태로 받아들이고, 그들의 결과를 배열로 반환하는 메소드들.
 

1. Promise.any() : 프로미스 중 가장 먼저 fulfilled된 결괏값으로 진행 (fulfilled 하나도 없으면 에러.)
2. Promise.all() : 단 하나의 프로미스라도 rejected가 된다면 실패. 모두 resolve라면 모든 프로미스가 resolve 되기까지 기다림. 즉 가장 느린 프로미스의 시간을 따름.
3. Promise.race() :  ( resolve와 rejected를 가리지 않고) 프로미스 중 가장 먼저 완료된 결괏값으로 진행
 
 


 
 
 
 🎀
1. Promise.any()
 
 

 
Promise.any() 의 예시 코드입니다 ! 결괏값이 어떻게 출력될지 예상 되시나요 ? Promise.any 메소드는 이행된 프로미스들 중 가장 먼저 이행된 프로미스를 반환합니다. y는 rejected 프로미스이니 배제되고, x와 z 중 1초 더 빠른 z가 바로 가장 먼저 이행된 프로미스겠네요. z의 결과를 반환하면 결과적으로 "success!"가 출력되겠습니다.
 
 


 
 🎀
2. Promise.all()
 

 
 
Promise.all 메소드는 모든 프로미스들이 resolve 프로미스들이라면, 모든 프로미스들이 이행될 때까지 기다립니다. 위 코드의 경우 가장 느린 프로미스의 경우 3초의 지연시간을 가지므로 전체 대기 시간은 3초가 되겠죠. 3초 후 출력값은 어떻게 될까요? 단일 프로미스가 반환되었을 경우는 이전과 같이 then이나 catch로 처리되어 출력되었겠지만, Promise.all가 이번처럼 여러 프로미스들을 한번에 반환되어야 하는 상황에서는 then 메소드가 세 프로미스를 배열로 모아 반환합니다. 따라서 출력값은

["성공!","win!","success!"]

 
이렇게 나오게 된답니다 !
 
 
 
 


 
 
 
 
 🎀
3. Promise.race()
 
 

 
이번 코드의 출력값은 어떻게 될까요 ? Promise.race 메소드의 경우 resolve이던 rejected이던 관계없이 가장 빨리 수행된 프로미스를 반환한다고 앞서 말씀드렸죠. 따라서 위 코드는 가장 빠른 프로미스인 x를 반환할 것이고, x는 rejected 프로미스이므로 catch 메소드로 처리되어 결론적으로 출력값은 "실패" 가 되겠네요.  
 
 
 
 


 
 
 
 
* javascript에서 큰 숫자를 적을 때 꿀팁
 
일반적으로 큰 숫자를 적을 때 우리는 쉽게 알아보기 위해 1,000,000 과 같은 식으로 세 자리씩 쉼표로 끊어 적곤 합니다. 같은 맥락으로 javascript에서는 "_"을 이용하여 표현할 수 있는데요, 콘솔창에 찍어보면 온전한 숫자로만 나온답니다. 아래 코드를 참고해 주세요 !
 

 
 
 


 
 
 
* and나 or 연산도 기호를 아래와 같이 줄여 쓸 수 있다.
 

 
 
 


 
 
 
" ?? " 연산
: 앞의 변수가 null이나 undefined일 경우 뒤의 값이 선택된다.

 
 두 번째 예시의 경우 변수 a가 undefined 상태이니 mike가 할당되어 출력되고 있네요.



 


 

오늘도 방문해주셔서 감사합니다.
도움이 되셨다면 좋아요 부탁드립니다 ..! 🥹🌟🙏🏻
🌟 좋은 하루 되세요 ! 🌟