리덕스 미들웨어 Thunk, Promise, TDZ

0

부트캠프 프로젝트

목록 보기
16/24
  • 리덕스에서 미들웨어 Thunk의 역할은?

    컴포넌트에서 dispatch로 payload를 넘길시, 객체 뿐만 아니라 함수도 넘길 수 있는 것
    넘기는 payload에 대해 중간에 ThunkAPI가 제공하는 기능들로 함수 등으로 한번더 가공하고 reducer에 넘길 수 있다. 함수로 무언가 중간 처리과정을 넣고 싶을 때, 사용하는 것이다.

  • 프로미스는 정확히 말하면 비동기가 아니다. 비동기와 프로미스는 각각 무엇일까?

    비동기란 알고리즘이 위에서 아래로 순차적으로 이루어지는 상식과 달리, 중간 코드가 서버 등에서 완벽하게 데이터를 불러오질 못했는데도 그 아래 코드가 실행되는 개념.

    promise는 비동기적으로 실행하는 작업의 결과(성공, 실패)를 나타내는 객체다. 비동기 처리의 결과객체화 한다는 것이 특징이다.

    promise는 일단, 아래와 같이 사용할 수 있다.

    let promise = new Promise(function(resolve, reject) {
    // executor ('', '')
    });

    예시와 같이, new Promise를 통해 생성하고 resoulve, reject함수를 인자로 받는 함수가 생성자의 함수의 인자 자리에 들어간다. executor자리의 함수를 실행자, 실행함수 라고 한다. executor는 new Promise가 만들어질 때, 자동으로 실행되고, 인자로 받은 resolve, reject 함수 중 하나 이상을 콜 해야한다.

    Promise객체는 pending, fulfilled, rejected 3가지 상태가 존재한다.
    아직 실행중인 상태: pending
    작업이 완료된 상태: fulfilled
    작업이 실패한 상태: rejected

    작업이 성공했거나, 실패했을 때, 어떠한 작업을 추가적으로 할 경우, then 메서드에 의해 실행된다. then 메서드는 promise 객체에 붙여서 사용한다.
    resolve를 통해 받은 값에 대해서는 then()메서드를 통해 값을 반환 받을 수 있고, reject의 반환 값에 대해서는 catch()메서드를 통해 반환 받는다.
    이처럼, then()과 catch() 문을 체이닝을 통해 비동기 로직의 성공/실패 여부에 따라 분기 처리가 가능하다.
    이에 더해서, async / await 비동기 처리 문법도 있는데, 이는 추가적으로 따로 포스트 할 예정이다.

  • TDZ(Temporal Dead Zone/일시적 사각지대)란?

    호스팅에서 사용되는 개념_

profile
안녕하세요😄 비전공자의 웹개발자 도전기를 쓰는 중입니다! 수정/보완할 부분이 있다면 피드백 언제든 환영입니다!

0개의 댓글