Javascript에서 비동기 데이터 다루기 : Promise

약속이란 무엇입니까?



글쎄, 우리는 일상 생활에서 이 단어를 너무 많이 사용합니다. 우리는 종종 우리 자신에게 약속을 하고 때로는 지키며 때로는 어기기도 합니다 😉. 프로그래밍과 관련하여 정확히 같은 의미를 가집니까?

글쎄, 일종의!. 이를 이해하려면 비동기 데이터를 처리하는 목적이 무엇인지 기억해야 합니다. 비동기식으로 우리가 하고 있는 일은 먼저 기본 작업을 완료한 다음 후속 작업만 수행하려고 합니다. 여기서 기본 작업은 일종의 약속입니다. 이제 프로그래밍 컨텍스트에서 정확히 어떻게 작동하는지 알아 보겠습니다.


약속하다


  • Promise는 해결되거나 거부된 단일 값을 생성하는 객체입니다(만들거나 중단)
  • .
  • Promise에는 세 가지 상태가 있습니다. 보류, 이행 및 거부.
    즉 약속 생성자를 호출하자마자 주어진 작업을 시작합니다.
  • 해결 및 거부의 두 가지 기능을 허용합니다.
  • Promise는 thenable입니다. 즉 then 메서드를 사용하여 후속 작업을 실행할 수 있습니다.


  • 위의 코드 예에서는 잠금 상태에 따라 두 작업 중 하나를 수행합니다.
  • 락다운이 없으면 여행을 갈 수 있고 그렇지 않으면 집에 앉아 있어야 합니다.

  • 이제 실용적인 예를 들어 보겠습니다. 사용자가 웹사이트에 로그인하려고 합니다. 여기서 인증 api는 토큰을 반환할 경우 호출되며 사용자만 대시보드를 볼 수 있습니다.




    약속 체이닝


  • 서로 의존하는 여러 비동기 작업이 있는 경우 then 메서드를 사용하여 연결할 수 있습니다
  • .
  • 프라미스를 사용할 수 있으므로 n개의 프라미스를 차례로 연결할 수 있습니다.




  • 오류 처리


  • 여러 요인으로 인해 오류가 발생할 수 있습니다. 따라서 깨진 페이지를 제공하기보다는 이를 처리하는 것이 필요합니다.
  • 약속에는 catch 방법이 있습니다. 약속 객체에 연결할 수 있습니다.
  • 아래에 표시된 코드 예제는 오류가 있는 경우 등록 페이지로 리디렉션됨을 보여줍니다.




  • 장점 및 단점


  • 콜백에서 수행되는 것처럼 함수를 중첩할 필요가 없습니다.
  • 코드 가독성을 향상시키고 오류를 더 잘 처리할 수 있는 방법을 제공합니다.
  • 프라미스는 열망하므로 일단 실행되면 취소할 수 없습니다.
  • 프로그래밍 실행은 약속을 받을 때까지 그 순간에 멈추지 않습니다. 프로그램은 계속해서 한 줄씩 더 실행됩니다.
  • 또한 여전히 코드가 동기식으로 보이지 않습니다.



  • 문제



    내 인터뷰 중 하나에서 나는 약속을 작성하라는 요청을 받았습니다.
    문제 설명 :
    숫자가 있으면 약속을 작성하면 숫자로 해결되고 그렇지 않으면 숫자가 아닌 것으로 거부됩니다.

    function getPromise(value) {
      return new Promise((resolve, reject) => {
        if (typeof value === 'number') {
          resolve('I am number!');
        } else {
          reject(' I am NOT a number!');
        }
      });
    }
    
    getPromise("abc").then((res) => {
      console.log('Resolved -------', res);
    }, (err) => {
        console.log(" Rejected -----",err);
    });
    


    그래서 단점을 극복하기 위해 async-await가 도입되었습니다.
    우리는 그것들이 무엇이며 어떻게 작동하는지 다음 블로그에서 볼 것입니다.

    기사를 읽어주셔서 감사합니다!!!.의심이나 제안이 있으시면 언제든지 저를 여기로 보내주세요!

    좋은 웹페이지 즐겨찾기