- new Promise(function(resole, reject))
- Promise.resolve(function()
두가지 방법이있는데 일단!
resolve는 주어진 값으로 이행하는 Promise 객체를 반환한다.
then 이 존재하는 경우, 반환된 프로미스는 then 메서드를 진행 후 마지막 상태를 취합니다.
그렇지 않은 경우 반환된 프로미스는 주어진 값으로 이행합니다.
_reject는 주어진 이유로 거부하는 Promise 객체를 반환합니다.
new Promise() 메서드를 호출할 때 콜백 함수를 선언할 수 있고, 콜백 함수의 인자는 resolve, reject입니다.
- 대기 (pending): 이행하거나 거부되지 않은 초기 상태.
new Promise (); // 이 메서드를 호출하면 대기중(pending)상태가 된다.
// 이것을 호출할 때 callback function을 선언할 수 있다
// callback function의 인자는 resolve, reject이다.
new Promise ((resolve, reject) => {
.........
});
- 이행 (fullfilled): 연산이 성공적으로 완료됨. 즉, 비동기 처리가 성공적으로 완료되어 약속을 이행한 상태. /then().
new Promise((resolve, reject) => {
resolve(); // 콜백 함수의 인자 resolve 를 호출하면 이행(Fulfilled) 상태가 된다.
});
- 거부(rejected): 연산이 실패함. 비동기 요청 중 에러가 발생했을 때
new Promise((resolve, reject) => {
reject(); // 콜백 함수의 인자 reject 를 호출하면 이행(Fulfilled) 상태가 된다.
})
.catch()
}
Promise.prototype.then() 프로미스에 이행 또는 거부 처리기를 추가하고 호출된 처리기의 반환값 또는 프로미스가 처리되지 않은 경우 그 원래 처리된값으로 결정하는 새 프로미스를 반환한다.
전에 있던 결과값을 return 값을 받아오는것으로 한다.
프로미스(promise)에 거부 처리기 콜백을 추가하고 호출된 경우 콜백의 반환값 또는 프로미스가 대신 이행된 경우 그 원래 이행(fulfillment)값으로 결정하는(resolving) 새 프로미스를 반환한다.
catch()로 에러를 처리하는 게 더 효율적이다.
async 와 await 는 절차적 언어에서 작성하는 코드와 같이 사용법도 간단하고 이해하기도 쉬운데 function 키워드 앞에 async만 붙여주면 되고 비동기로 처리되는 부분 앞에 await만 붙여주면 된다.
다만, await 뒷부분이 반드시 promise 를 반환해야 한다는 것과 async function 자체도 promise 를 반환한다는 것입니다.
await 키워드 뒤에는 promise를 return 하는 함수이어야 한다.
promise의 reslove 값이 리턴된다. Promise에 의해 만족되는 값이 Return 되고 Promise가 아닌 경우에는 그 자체가 반환된다.