promise

김_리트리버·2020년 10월 5일
0

정의

= 비동기 작업의 최종성공 또는 실패결과를 나타내는 객체

사용이유

  1. 비동기 작업을 동기적으로 처리하고자 할때 콜백함수를 사용하지 않기 위해서

cf> 콜백함수를 사용하지 않는 이유

콜백함수가 많아지면 가독성이 떨어지기 때문

사용방법

  1. 상태
  • pending : 비동기 처리 로직이 완료되지 않은 상태
new Promise();

/// 또는 

new Promise(function (resolve,reject) {


})
  • fulfilled : 비동기 처리가 완료되어 프로미스 객체가 resolve 로 값을 반환한 상태 ( 이행 or 완료 )
new Promise(function(resolve, reject) {
  resolve('성공');
});
// 예시 
function getData() {
  return new Promise(function(resolve, reject) {
    var data = 100;
    resolve(data);
  });
}

// resolve()의 결과 값 data를 resolvedData로 받음
getData().then(function(resolvedData) {
  console.log(resolvedData); // 100
});

async function getPromiseData() {
console.log(await getData())

}
getPromiseData() // 100
  • rejected : 비동기 처리가 실패하거나 오류가 발생한 상태
new Promise(function(resolve, reject) {
  reject('실패');
});
 // 예시 
function getData() {
  return new Promise(function(resolve, reject) {
    reject(new Error("Request is failed"));
  });
}

// reject()의 결과 값 Error를 err에 받음
getData().then().catch(function(err) {
  console.log(err); // Error: Request is failed
});
  1. 메서드

Promise.reject(reason)

거부된 Promise 를 리턴한다.

Promise.reject("Testing static reject").then(function(reason) {
  // 호출되지 않음
// resolve 자리라서 호출되지 않음 
}, function(reason) {
  console.log(reason); // "Testing static reject"
});

Promise.reject(new Error("fail")).then(function(error) {
  // 호출되지 않음
// resolve 자리라서 호출되지 않음 
}, function(error) {
  console.log(error); // Stacktrace
});

Promise.resolve(value)

주어진 값 ( value )으로 이행되는 Promise.then 객체를 반환한다 .

const promise1 = Promise.resolve(123);

promise1.then((value) => {
  console.log(value);
  // expected output: 123
});
profile
web-developer

0개의 댓글