<JAVA Script> Promise 정적 속성과 정적 메서드(2)
📌 4. Promise 정적 속성 : Promise.race()
Promise.race() 메소드는 Promise 객체를 반환한다. 이 프로미스 객체는 iterable 안에 있는 프로미스 중에 가장 먼저 완료된 것의 결과값으로 그대로 이행하거나 거부한다. 여러 개의 프로미스 중에서 가장 먼저 완료된(이행되거나 거부된) 프로미스의 결과를 반환하는 새로운 프로미스를 반환한다. 즉, 주어진 프로미스 배열에서 가장 빨리 완료된 프로미스의 결과나 에러를 취한다.
주어진 코드에서 Promise.race()는 주어진 프로미스 배열 중 가장 먼저 완료된(이행되거나 거부된) 프로미스의 결과를 반환한다. 이 경우, promise2가 promise1보다 빠르게 완료되므로 promise2의 결과가 반환된다.
1. promise1: 500ms 후에 이행(resolve)되어 'one' 값을 반환한다.
2. promise2: 100ms 후에 이행(resolve)되어 'two' 값을 반환합니다.
Promise.race([promise1, promise2])는 promise2가 더 빨리 완료되므로 'two' 값을 반환합니다.
결과값 = > two
📌 5. Promise 정적 속성 : Promise.reject()
Promise.reject(reason) 메서드는 주어진 이유(reason)로 거부된 상태의 프로미스를 생성하고 반환하는 메서드이다. 주로 비동기 작업에서 오류를 명시적으로 생성하고 처리하기 위해 사용된다. 즉시 거부된 프로미스를 반환하며, 이 프로미스는 일반적으로 .catch() 또는 .then()의 2번째 인수로 전달된 오류 처리기를 통해 처리된다.
* 구문
Promise.reject(reason)는 주어진 이유로 거부된 새로운 프로미스를 반환한다.
* 예제 1
1. Promise.reject(reason)는 주어진 이유로 즉시 거부된 프로미스를 생성한다.
2. then() 메서드의 두 번째 콜백 함수는 프로미스가 거부되었을 때 호출된다.
- 첫 번째 예제에서는 문자열이 거부 이유로 전달되고, 콘솔에 문자열이 출력된다.
- 두 번째 예제에서는 Error 객체가 거부 이유로 전달되고, 콘솔에 Error 객체의 스택 트레이스가 출력된다.
3. 이 방식은 비동기 작업에서 발생한 오류를 명확하게 처리하고 디버깅하는 데 유용하다.
📌 5. Promise 정적 속성 : Promise.resolve()
주어진 값으로 이행된(fulfilled) 상태의 프로미스를 생성하여 반환한다. 이 메서드는 값이 프로미스인지, 일반 값인지에 상관없이 항상 프로미스를 반환하여 비동기 작업을 단순화하고 일관성 있게 처리할 수 있도록 한다.
* 구문
value: 프로미스를 이행하는 값이다. 이 값이 프로미스인 경우, 그 프로미스가 반환된다. 일반 값인 경우, 해당 값으로 이행된 새로운 프로미스가 반환된다.