티스토리 뷰
프로미스는 자바스크립에 내장된 내장객체 입니다
프로미스 객체에서는 2가지를 형태를 지닙니다.
1. 상태(state)
- pending : 수행중
- fullfilled : 성공적 완료
- rejected : 실패
2. 프로듀서 - 정보를 제공하는 제공자(즉, Promise)
컨슈머 - 사용자(즉, 호출하는사람)
프로미스 생성
executor콜백함수를 전달해야 하며 executor콜백함수는 다시 resolve함수와 reject함수를 받습니다.
//매개변수는 컨슈머가 분명 콜백함수를 전달할거야!(그 콜백함수로 리턴해줄게!)
let promise = new Promise( (success, fail) => {
//producer 입장에서 성공했을 때 성공을 알리는 함수
success("success");
//producer 입장에서 실패했을 때 실패를 알리는 함수
//fail(new Error("fail"));
});
console.log(promise)
프로미스의 사용 then(), catch()
- then은 promise가 정상적으로 실행 된다면, 결과를 실행시켜주는 콜백함수이다.
- catch는 promise가 실패했을 때, 결과를 실행시켜주는 콜백함수이다.
//....생략
promise.then( data => console.log(data) )
.catch( error => console.log(error) )
프로미스의 적용
결과가 언제 돌아갈지 모르지만, 내가 이것을 완료되면 Promise를 전달해 줄테니, 너는 then함수만 이용해서 결과를 받아서 처리해!
ajax fetch()의 내부모습 예시
//자바스크립트로 구현되어있는 fetch라고 가정
function myfetch(req) {
//비동기적 실행.. 10초..
return new Promise( (success, fail) => {
success("data....");
});
}
//fetch와 같은 실행구조를 보인다.
myfetch("http://localhost:5502/~~~~~").then( response => console.log(response) );
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Promise를 더 쉽게 사용할 수 있게 해주는 async(이거 비동기야)
async, await규칙
-
어싱크 함수 안에서 어웨잇을 사용한다
-
function 앞에 async 키워드를 추가 함수는 언제나 프라미스를 반환 합니다.
- 리턴이 프로미스라면 await을 적용하고 then절을 없앨 수 있다.
async란 function앞에 선언하며, return값을 자동으로 Promise로 변경해주는 역할을 한다.
즉, 비동기 함수의 실행 형태로 변경해준다.
async function myfetch(req) {
//비동기적 실행.. 10초..
return "data....";
}
//var result = myfetch()
//console.log(result); //Promise
myfetch("http://localhost:5502/~~~~~").then( response => console.log(response) );
Promise를 더 쉽게 사용할 수 있게 해주는 await(기다려)
리턴이 프로미스라면 await을 적용하고 then절을 없앨 수 있다. (단 async함수 안에서만 사용 가능합니다)
(async function() {
let data = await myfetch();
console.log(data)
})();
async, await의 장점
- 코드의 간결성
- 어싱크, 어웨잇은 동기적방식(순서를) 보장한다
'JavaScript' 카테고리의 다른 글
JS ES6 문법 한눈에 보기 (0) | 2023.01.12 |
---|---|
23-01-06 AJAX(비동기 통신) , 외부 API 가져오기 (0) | 2023.01.06 |
23-01-05 JS ) location객체, history객체, navigator객체, 콜백함수, 쿠키, 세션 - localstorage와 sessionStorage (0) | 2023.01.05 |
23-01-04 DOM- form객체, 정규표현식, 날짜객체 / BOM - window팝업, window인터벌, window타임아웃 (0) | 2023.01.04 |
23-01-03 클래스 속성 제어 실습, 다중이벤트, 이벤트전파, 이벤트전파원리, 이벤트전파여러클래스, 이벤트중단, 이벤트객체와 dataset (2) | 2023.01.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 박인욱 강사님
- JS ES6 문법
- 자바수업
- interface #자바
- 가비지 콜렉팅
- 내포 클래스
- input 스트림
- 자바 api
- api 활용
- 자바
- FOR문
- 다중 반복문
- 배열과 탐색
- 자바#자바수강기록
- 중앙정보처리학원
- 국비지원 학원 수업 내용
- 배열의 정렬
- 박문석 선생님
- 국비학원 수업
- output 스트림
- 조건문
- 오코노라멘
- 자바스크립트 ES6 문법
- 알람 시계 문제
- 배열 삭제
- 강남 중앙정보처리학원
- nasted class
- 국비학원
- 강남역 12번 춣구
- 데이터베이스 수업
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함