본문 바로가기
Elice SW 2/TIL

DAY 19 -TIL

by 자이구 2022. 4. 30.

async/await

  • Promise를 활용한 비동기 코드를 간결하게 작성하는 문법
  • async/await 문법으로 비동기 코드를 동기 코드처럼 간결하게 작성
  • await 키워드는 반드시 async 함수 안에서만 사용가능
  • await은 promise에서 리턴값이 반환되기 전까지 기다림
  • anync로 선언된 함수는 반드시 Promise를 리턴
  • await는 프로미스를 리턴하지 않는 함수도 사용가능, 리턴한 데이터는 Promise.resolve()로 감싸짐

 

async 함수

async function asyncFunc() {
	let data = await fetchData()
	let user = await fetchUser(data)
	return user
}

//function fetchData(){return new Promise(~~)}
//fetchData().then(data => {~~~})
  • await 키워드는 then 메서드 체인을 연결한 것처럼 순서대로 동작
  • 비동기 코드에 쉽게 순서를 부여
  • Promise를 리턴하는 함수의 경우, 에러가 발생하면 catch메서드를 이용하여 에러를 처리
  • catch 메서드를 사용하지 않는다면 anync함수에서 try-catch 구문을 이용하여 에러를 처리
async function asyncFunc() {
	let data1 = await fetchData1()
	let data2 = await fetchData2(data1)
	let data3 = await fetchData3(data2)
	return data3
}
function promiseFunc() {
	return fetchData1()
		.then(fetchData2)
		.then(fetchData3)
}
async function asyncFunc() {
	try {
		let data1 = await fetchData1()
		return fetchData2(data1)
	}catch (e) {
		console.log("실패 : ", e)	
	}
}

 

Fetch API

  • 기존 XMLHTTPRequest를 대체하는 HTTP 요청 API
  • ES6에 추가된 Promise를 리턴하도록 정의
  • 네트워크 요청 성공 시, Promise는 Response 객체를 resolve
  • 네트워크 요청 실패 시, Promise는 에러를 reject
  • Response 객체는 결과에 대한 다양한 정보를 담음
  • response.json() 메서드는 얻어온 body 정보를 json으로 만드는 Promise를 반환
function getData(serverURL)	
    fetch(serverURL)
		.then(response => response.json())
		.then(json => {
				console.log('body : ', json)
})

async getData(serverURL) {
	const response = await fetch(serverURL);
	const json = await response.json();
	return json;
}

 

'Elice SW 2 > TIL' 카테고리의 다른 글

DAY 21 - TIL  (0) 2022.05.03
DAY 20 - TIL  (0) 2022.04.30
DAY 18 - TIL  (1) 2022.04.29
DAY 17 - TIL  (0) 2022.04.28
DAY 16 - TIL  (0) 2022.04.27

댓글