Asyn & Await

Sehyeon Park·2021년 7월 27일
0

1 ) Promise 실행함수가 가지고 있는 두 개의 파라미터 resolve 와 reject 는 각각 무엇을 의미하나요?

  • new Promise(function(resole, reject))
  • Promise.resolve(function()

두가지 방법이있는데 일단!

resolve는 주어진 값으로 이행하는 Promise 객체를 반환한다.
then 이 존재하는 경우, 반환된 프로미스는 then 메서드를 진행 후 마지막 상태를 취합니다.
그렇지 않은 경우 반환된 프로미스는 주어진 값으로 이행합니다.
_reject는 주어진 이유로 거부하는 Promise 객체를 반환합니다.
new Promise() 메서드를 호출할 때 콜백 함수를 선언할 수 있고, 콜백 함수의 인자는 resolve, reject입니다.

2) resolve, reject함수에는 인자를 넘길 수 있습니다. 이때 넘기는 인자는 어떻게 사용할 수 있나요?

3) new Promise()를 통해 생성한 Promise 인스턴스에는 어떤 메소드가 존재하나요? 각각은 어떤 용도인가요?

6 ) Promise의 세 가지 상태는 각각 무엇이며, 어떤 의미를 가지나요?

  • 대기 (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()
    }

4) Promise.prototype.then 메소드는 무엇을 리턴하나요?

Promise.prototype.then() 프로미스에 이행 또는 거부 처리기를 추가하고 호출된 처리기의 반환값 또는 프로미스가 처리되지 않은 경우 그 원래 처리된값으로 결정하는 새 프로미스를 반환한다.
전에 있던 결과값을 return 값을 받아오는것으로 한다.

5 )Promise.prototype.catch 메소드는 무엇을 리턴하나요?

프로미스(promise)에 거부 처리기 콜백을 추가하고 호출된 경우 콜백의 반환값 또는 프로미스가 대신 이행된 경우 그 원래 이행(fulfillment)값으로 결정하는(resolving) 새 프로미스를 반환한다.
catch()로 에러를 처리하는 게 더 효율적이다.

7) await 키워드 다음에 등장하는 함수 실행은 어떤 타입을 리턴할 경우에만 의미가 있나요?

async 와 await 는 절차적 언어에서 작성하는 코드와 같이 사용법도 간단하고 이해하기도 쉬운데 function 키워드 앞에 async만 붙여주면 되고 비동기로 처리되는 부분 앞에 await만 붙여주면 된다.
다만, await 뒷부분이 반드시 promise 를 반환해야 한다는 것async function 자체도 promise 를 반환한다는 것입니다.

8) await 키워드를 사용할 경우, 어떤 값이 리턴되나요?

await 키워드 뒤에는 promise를 return 하는 함수이어야 한다.
promise의 reslove 값이 리턴된다. Promise에 의해 만족되는 값이 Return 되고 Promise가 아닌 경우에는 그 자체가 반환된다.

profile
후회하지 않는 개발자가 되자!

0개의 댓글