<h1>서울숲_M_Day05 리뷰 레포트</h1>
<h3>참석자</h3>
- 정예원, 이창권, 서준배, 정태용
<h2>1. 코드 동작 이해</h2>
- 제네레이터함수
- 함수내에서 정지 시점을 정해서 조절이 가능한 함수.
- yield를 통해 정지가 가능
- 이후 next()를 통해 정지를 한 yield로부터 시작.
- 메모리 효율에 기여 가능.
- 참고 블로그 URL: https://velog.io/@rohkorea86/Generator-%ED%95%A8%EC%88%98%EB%A5%BC-%EC%9D%B4%ED%95%B4%ED%95%B4%EB%B3%B4%EC%9E%90-%EC%9D%B4%EB%A1%A0%ED%8E%B8-%EC%99%9C-%EC%A0%9C%EB%84%A4%EB%A0%88%EC%9D%B4%ED%84%B0-%ED%95%A8%EC%88%98%EB%A5%BC-%EC%8D%A8%EC%95%BC-%ED%95%98%EB%8A%94%EA%B0%80
- promise
- 자바스크립트의 특성인 비동기를 해결하기위해 콜백함수를 사용하는데 가독성이 떨어지는것을 해결하기위해 사용
- 에러처리가 편함
- 프로미스의 상태 3가지
- pending대기 - 비동기 처리 로직이 아직 완료 안됨
- fulfilled이행 - 비동기 처리 로직이 완료 , 결과값 반환 상태
- rejected실패 - 비동기 처리가 실패, 오류가 발생
- 참고 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/>
```js
function getData(callbackFunc) {
$.get('url 주소/products/1', function (response) {
callbackFunc(response); // 서버에서 받은 데이터 response를 callbackFunc() 함수에 넘겨줌
});
}
getData(function (tableData) {
console.log(tableData); // $.get()의 response 값이 tableData에 전달됨
});
-->
function getData(callback) {
// new Promise() 추가
return new Promise(function (resolve, reject) {
$.get('url 주소/products/1', function (response) {
// 데이터를 받으면 resolve() 호출
resolve(response);
});
});
}
// getData()의 실행이 끝나면 호출되는 then()
getData().then(function (tableData) {
// resolve()의 결과 값이 여기로 전달됨
console.log(tableData); // $.get()의 reponse 값이 tableData에 전달됨
});
```
- this의 scope 해결
- bind를 통해 연결
- this를 저장하여 사용
- this가 필요없도록 class외부로 꺼내서 사용
- arrow function을 사용
<h2>2. 코드 동작 개선</h2>
- git의 branch에 대해서 이해를 하고 있는가?
- 다양한 git workflow에 따라 branch전략이 달라진다.
- 각 용도에 맞는 branch에서 개발자가 따로 작업
- pull request를 통해서 merge를 하여 branch를 합친다.
- 기본적인 git work flow : 항상 유지되는 메인 브랜치들(master, develop)과 일정 기간 동안만 유지되는 보조 브랜치들(feature, release, hotfix)을 포함하여 총 5가지의 브랜치를 사용한다.
- 디버깅단계에서 breakpoint를 사용하면서 문제를 해결하려고 했는가?
- 실행 중간에 변수를 확인하거나, 실행 순서를 확인하기 위해 사용함.
<h2>3. Consideration</h2>
- 각자 어떤 디버깅 방법을 사용해보았는가? 이 부분을 모두 이야기하고 적어보자.
- breakpoint를 통해 특정 지점이나 오류난 부분을 정지하여, 변수값을 확인하며 진행.
- 프로젝트에서 npm 명령어를 활용해 추가로 외부 모듈을 설치했을때 package.json에 어떤 변화가 생기는지 설명하자.
- dependency에 설치한 외부 모듈명과 모듈 버전이 추가된다.
- 이로 인해 require("underscore")로 호출이 가능해졌다.
```json
"dependencies": {
"underscore": "^1.9.1"
}
```
- node_modules 디렉토리는 어떤 역할을 하는 디렉토리 인가 설명해보자.
- npm으로 다운받은 외부 모듈이 저장되는 장소
- export, require 동작방식에 대해서 설명해보자.
- commonJs에서 사용하는 모듈 사용 방식(vs ES6의 import,export)
- 모듈을 require할 때마다 새로운 인스턴스가 생성되는 것이 아니라 캐싱된 객체 인스턴스를 재사용함
- key값으로 해당 모듈 파일의 경로를 갖게 되는데 key값이 삭제된다면 다음 require 요청시 다시 재로딩하게 됨
- 추가
- module.exports 와 exports는 같다.