[JavaScript] 프로미스와 프로미스 API구조

2021. 10. 19. 23:01·💻 개발/언어
728x90
반응형
강의를 보다가 프로미스, .then 사용에대한 설명이 없어서 공부할 겸 적는 포스팅

 

 

프로미스란?

프로미스는 자바스크립트 비동기 처리에 사용되는 객체 

 

비동기 처리란?

특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드를 먼저 수행함

 

프로미스가 필요한 이유?

서버에서 받아온 데이터를 화면에 표시할 때 사용한다.

내가 인턴생활 할 때 한글과 번역문을 가지고 엑셀 만드는 일을 했는데 

파파고API를 사용하여 문장 번역 스크립트를 짰는데 3000문장 당 15분 정도 걸렸다.

이때 프로미스 개념을 적용하자면 

프로미스를 사용하지 않았다면, 번역되는 15분을 기다리지 않고 바로 엑셀을 생성했을 것이다 

그러면 한글과 빈 번역문의 엑셀파일이 생성 되었을 것이다.

이와 같은 문제점을 해결하기 위해 나온 것이 프로미스 

 

프로미스의 3가지 처리과정

  • 대기: 비동기 처리 로직이 완료되지 않은 상태
  • 이행: 비동기 처리가 완료되어 프로미스가 결과 값을 반환해준 상태
  • 실패: 비동기 처리 실패 or 오류 발생 상태

대기 

new Promise();

new Promise() 메서드를 호출하면 대기 상태가 된다.

new Promise() 메서드를 호출할 때 콜백 함수를 선언할 수 있고, 콜백 함수의 인자는 resolve, reject다.

new Promise(function(resolve, reject){

});

이행

new Promise(function(resolve, reject){
	resolve();
    });

resolve를 실행하면 이행 상태가 된다.

이행상태가 되면 .then()을 이용하여 아래와 같이 처리 결과 값을 받을 수 있다.

 

function getPapago(){
	return new Promise(function(resolve, reject){
    const en = 3000;
    resolve(en)
     });
    }
    
//resolve 결과값 en을 resolvedEn으로 받음
getPapago().then(function(resolvedEn){
	console.log(resolvedEn); //3000
});

=> 3000

 

적용

현재 만들고 있는 유튜브 로직에서 .then부분에 대한 console.log하여 불러온 데이터값

console.log 결과

 

 

지금은 개념을 이해하고 감을 잡는데 집중하고 

추후에 프로미스를 사용하여 로그인 로직을 만든다거나 할 때 https://joshua1988.github.io/web-development/javascript/promise-for-beginners/

 

자바스크립트 Promise 쉽게 이해하기

(중급) 자바스크립트 입문자를 위한 Promise 설명. 쉽게 알아보는 자바스크립트 Promise 개념, 사용법, 예제 코드. 예제로 알아보는 then(), catch() 활용법

joshua1988.github.io

를 참고해야겠다. 

 

* 프로미스관련 참고 캡틴판교님 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'💻 개발 > 언어' 카테고리의 다른 글

[JAVA] 헷갈렸던거 정리(static, 생성자, 기본생성자, 초기화)  (2) 2022.09.09
[JAVA](모든 시도 해봄) / java.lang.ClassNotFoundException 오류 해결  (4) 2022.03.12
[Python] 중복단어 삭제하기(연속적으로 나오는 경우/ 전체 단어 중 삭제)  (0) 2021.09.03
[Python] 전체 글 목록에서 헤더 푸터 자르기 / pdftotex, 함수 만들기  (0) 2021.07.18
[Python] 어절수 조건에 일치하는 경우만 출력하기  (0) 2021.06.30
'💻 개발/언어' 카테고리의 다른 글
  • [JAVA] 헷갈렸던거 정리(static, 생성자, 기본생성자, 초기화)
  • [JAVA](모든 시도 해봄) / java.lang.ClassNotFoundException 오류 해결
  • [Python] 중복단어 삭제하기(연속적으로 나오는 경우/ 전체 단어 중 삭제)
  • [Python] 전체 글 목록에서 헤더 푸터 자르기 / pdftotex, 함수 만들기
foodev
foodev
이것저것 개발과 이것저것 리뷰 합니다.
    반응형
    250x250
  • foodev
    개발 개맛집
    foodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (109)
      • 🌟🙇🏻‍♂️ 꼭 읽어봤으면 하는 글 (4)
      • 💻 개발 (72)
        • 설정 및 세팅 (4)
        • DB&서버&네트워크&암호 (11)
        • React (0)
        • JPA, Querydsl (13)
        • 알고리즘 (7)
        • 언어 (15)
        • 프레임워크 (12)
        • HTML, CSS (10)
      • ✍🏻 (33)
        • 회고록 (16)
        • 독서록 (7)
        • 일지록 (9)
        • 세미나 (1)
      • 💡 리뷰 (0)
        • 제품리뷰 (0)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    해피해킹 키매핑
    validation failed (numeric string is expected)
    githubaction 라벨 배포
    토이프로젝트개발일지
    디비스냅샷
    di동작원리
    typedi 동작원리
    di란
    스냅샷과히스토리성 차이
    서이추
    db 초기화
    해피해킹 커스텀
    스냅샷방식
    스냅샷과 히스토리
    QueryDSL
    해피해킹 카라비너
    di의존성
    typedi란
    nestjs pipe body
    JPA
    해피해킹 방향키
    githubaction 라벨 ci/cd
    창업패키지후기
    스냅샷과로그성
    azure ci/cd
    개발썰
    db 날린 썰
    해피해킹 꿀팁
    nestjs pipe
    db 날림
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
foodev
[JavaScript] 프로미스와 프로미스 API구조
상단으로

티스토리툴바