1/19 일일정리 비동기 실습
1. fs 모듈을 이용한 비동기 실행
어제에 이어 fs 모듈로 로컬 자료을 받아서 비동기 함수를 이용한 실행을 진행하였다.
이전 코드를 async /await 을 사용해서 구현하였다.
Promise나 Promise.all 을 사용하면 .then으로 이어주면서 작업을 진행해야 했는데, async/ await 을 이용하면
좀 더 보기 편하게 코드를 작성 할 수 있었다.
await 키워드를 이용하면 await 키워드 뒤에오는 함수가 실행 될 때 까지 기다린 후 실행이 끝나면 생성되는 Promise 객체의 result값을 반환한다. 따라서 위의 코드처럼 JSON.parse의 인자값으로 바로 넣어줄 수 있다.
2. fetch를 이용한 비동기 실행
fetch 함수를 이용해서 외부 네트워크에 파일을 요청하고 받은 데이터를 객체 형태로 만드는 작업을 했다.
fetch 함수도 Promise 객체를 반환하지만, result값이 HTTP 응답 전체를 가지는 객체이기 때문에 .json() 메서드를 사용해서 우리가 필요로 하는 데이터 파일로 만들어 줘야 한다. json() 메서드도 Promise 객체를 반환한다.
첫번째 과제는 그냥 Promise chaining으로 받은 데이터를 빈객체에 넣어서 반환했다.
어제 한번 해봐서 그런지 생각보다 쉬웠다. fetch로 받은 데이터를 json 메서드로 필요한부분만 얻는 것만 추가했다.
두번째 과제는 Promise.all 을 사용하여 데이터를 받는 것이었다.
Promise.all 은 데이터를 배열로 반환 해주기 때문에 배열을 하나하나 빈 객체인 result에 담았다. 데이터가 여러개 들어온다면 for문을 이용해서 객체에 담으면 될 것 같다.
세번째 과제는 async / await 을 사용해서 데이터를 받는 것이었다.
함수를 async키워드를 붙여서 선언하고 fetch 함수 앞에 await 키워드를 붙여서 작업이 다 될 때 까지 기다린 후 변수에 데이터를 넣는다.
반환값으로 객체를 만들어 각각의 데이터가 담긴 변수를 넣어준다.
확실히 가장 최근에 나온 async / await이 가독성 측면에서 좋은 것 같다.