👋 Promise - resolve(), thenable, reject()
1. resolve()
-
성공(fullfilled) 상태의
Promise
인스턴스를 생성하여 반환Promise.resolve()
형태로 작성함- 파라미터 값에 따라 생성 방법이 다름
-
파라미터에 값을 작성하면 파라미터 값으로
Promise
인스턴스를 생성하여 반환const obj = Promise.resolve(['sports', 'music']); obj.then((value) => { console.log(value); }); console.log('끝'); // 1. resolve() 파라미터에 값을 작성했음, 값을 하나만 작성할 수 있으므로 다수를 작성하려면 Array, Object 등을 사용해야 함 // 2. new 연산자를 사용하지 않지만 Promise 인스턴스를 생성하여 반환함, 성공(fulfilled) 상태로 설정함 // 3. 성공 상태이므로 then()의 첫 번째 파라미터 함수가 호출됨 // [실행결과] // 끝 // ["sports", "music"]
-
파라미터에
Promise
인스턴스를 작성하면 파라미터의Promise
인스턴스의 값을 사용하여Promise
인스턴스를 생성하여 반환const obj = Promise.resolve(['sports', 'music']); Promise.resolve(obj).then((param) => { console.log(param); }); // 1. Promise.resolve(obj) resolve() 파라미터에 Promise 인스턴스를 작성했음 // 2. Promise 인스턴스를 생성하여 반환함 성공 상태로 설정함 // 3. then((param) => {console.log(param)}; obj 인스턴스의 resolve() 파라미터 값이 param에 설정됨 // [실행결과] // ["sports", "music"]
2. thenable
-
Promise.resolve()
파라미터에then()
을 작성한 형태const obj = Promise.resolve({ then(resolve, reject) { resolve([1, 2]); }, }); obj.then((value) => { console.log(value); }); console.log('끝'); // 1. const obj = Promise.resolve({...}); resolve() 파라미터에 then(){...}을 작성했음, Promise 인스턴스를 생성하여 반환함, then()을 실행하지 않고 아래로 이동 // 2. obj.then((value) => {console.log(value)}); then()을 실행하지 않음 // 3. console.log("끝")을 실행함 // 4. 이어서 Promise.resolve()의 then()을 실행함 // 5. then(resolve, reject){ resolve([1,2])}); resolve([1,2])를 호출하며 아래 then()의 첫 번째 파라미터 함수가 실행됨 // 6. obj.then((value) => {console.log(value)}); resolve([1,2])의 [1,2]가 value에 설정됨 // 실행결과 // 끝 // [1,2]
3.reject()
-
실패(reject) 상태의 Promise 인스턴스를 생성하여 반환함
Promise.reject()
형태로 작성함
- 파라미터에
reject
사유를 작성함 -
then()
을 연결한 형태const obj = Promise.reject('실패'); obj.then( (value) => console.log(value), (value) => console.log(value), ); // 1. const obj = Promise.reject("실패"); new 연산자를 사용하지 않지만 Promise 인스턴스를 생성하여 반환함, 실패(reject) 상태로 설정함 // 2. 실패 상태이므로 then()의 두 번째 파라미터 함수가 호출됨 // 3. obj.then( , (value) => console.log(value)}); Promise.reject("실패")에서 "실패"가 value에 설정됨 // 실행결과 // 실패
-
catch()
를 연결한 형태const obj = new Error('에러 발생'); Promise.reject(obj).catch((error) => console.log(error.message)); console.log('끝'); // 1. const obj = new Error("에러 발생"); Error 인스턴스를 생성함 // 2. Promise.reject(obj) obj 인스턴스를 사용하여 Promise 인스턴스를 생성함, reject()를 실행하지 않음 // 3. console.log("끝")을 실행함 // 4. Promise.reject(obj)를 실행하며 catch()가 호출됨 // 5. catch((error) => console.log(error.message)); obj 인스턴스가 error에 설정됨 // 실행결과 // 끝 // 에러 발생