ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [javascript] promise 에 대하여
    javascript 2021. 4. 23. 17:00
    반응형

    비동기식 처리 모델(Asynchronous processing model 또는 Non-Blocking processing model)

     

    동기적 처리가

    요청이후 응답전까지 다른 작업을 진행하지 기다린다는 점에서

    비동기는 non-blocking processing model 이라는 표현이 좀더 와닿는다

     

    위 말에서 유추할수 있듯이 비동기적 이라는 말은 요청이후 응답시까지 기다리는동안 다음 태스크를 수행하고

    응답완료시 이벤트가 발생하여 응답에 의한 데이터를 활용한 태스크가 이루어진다.


    • 이벤트 핸들러
    • Timer 함수(setTimeout, setInterval)
    • Ajax 요청

    위 3가지가 대표적으로 비동기식 처리 모델로 진행된다.

     

     

     

     

     

     

     

     

     

    그러면 비동기는 알겟고 promise 는 뭔지 mdn 설명을 보자

    설명

    Promise는 프로미스가 생성될 때 꼭 알 수 있지는 않은 값을 위한 대리자로(요청에대한 응답), 비동기 연산이 종료된 이후의 결과값이나 실패 이유를 처리하기 위한 처리기를 연결할 수 있도록 합니다. 프로미스를 사용하면 비동기 메서드에서 마치 동기 메서드처럼 값을 반환할 수 있습니다. 다만 최종 결과를 반환하지는 않고, 대신 프로미스를 반환해서 미래의 어떤 시점(메서드를 사용함으로서)에 결과를 제공합니다.

     

    >>> 비동기 연산 결과를 전달해주고 비동기메서드(ex.then) 를 사용하여 그안에서는 동기과정처럼 진행할수 있게 도와주는 객체??? 

     

    한줄요약 : 자바스크립트 비동기처리에 사용되는 객체

     

    아래코드는 프라미스 객체의 사용코드이다.

    let promise = new Promise(function(resolve, reject) {
    
      setTimeout(() => resolve("done!"), 1000);
      
    });
    
    
    promise.then(
    
      result => alert(result), // 1초 후 "done!"을 출력
      error => alert(error) // 실행되지 않음
      
    );

    프라미스 객체의 state, result 프로퍼티는 내부 프로퍼티이다

    • state — 처음엔 "pending"(보류)이었다 resolve가 호출되면 "fulfilled", reject가 호출되면 "rejected"로 변합니다.
    • result — 처음엔 undefined이었다, resolve(value)가 호출되면 value로, reject(error)가 호출되면 error로 변합니다.

    프라미스 객체의 메서드 

    then  — 첫번째 인자로는 resolve 된 값이 들어와 그값을 사용할수 있는 메서드 , 두번째 자리에는 err시에 reject 된 값이 들어와 처리할수                있음

    catch  — then 메서드의 두번째 자리랑 똑같은 역할인데 좀더 구분하기 쉽게 사용할수 있는 메서드 첫번째 자리에 err 가 들어와서 처리해                 줄수있다.(권장됨)

    finally — 응답결과에 상관없이 실해되는 코드가 필요할 경우 사용할수 있는 메서드

     

Designed by Tistory.