프로그래밍(101)
-
JavaScript 프로미스
모던 자바스크립트(저자 이웅모) 내용을 참고하였습니다. 💡️ Promise 비동기 처리를 위한 하나의 패턴으로 콜백 함수를 사용할 수 있지만, 여러 단점들이 있다 콜백지옥으로 인해 가독성이 나쁘다 (콜백지옥 : 콜백 함수 호출이 중첩되어 복잡도가 높아지는 현상) 비동기 처리 중 발생한 에러의 처리가 곤란하다 여러 개의 비동기 처리를 한번에 처리하는 데 한계가 있다 ES6에서는 비동기 처리를 위한 또 다른 패턴으로 프로미스(Promise)를 도입했다 Promise는 비동기 처리 상태와 처리 결과를 갖는다 ⚡️ Promise 생성 Promise 생성자 함수를 new 연산자와 함께 호출하면 Promise 객체를 생성한다 비동기 처리를 수행할 콜백 함수를 인수로 전달받는데, 이 콜백 함수는 resolve와 re..
2022.04.11 -
JavaScript 실행 컨텍스트
모던 자바스크립트(저자 이웅모) 내용을 참고하였습니다. 💡️ 실행 컨텍스트 자바스크립트의 동작원리를 담고 있는 핵심 개념 소스 코드를 평가하여 실행 컨텍스트를 생성한다 소스코드의 타입 소스코드의 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 내용이 다르다 전역 코드 : 전역에 존재하는 소스코드. 전역에 정의된 함수, 클래스 등의 내부 코드는 포함되지 않는다 함수 코드 : 함수 내부에 존재하는 소스코드. 함수 내부에 중첩된 함수, 클래스 등의 내부 코드는 포함되지 않는다 eval 코드 : 빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드를 말한다 모듈 코드 : 모듈 내부에 존재하는 소스코드. 모듈 내부의 함수, 클래스 등의 내부 코드는 포함되지 않는다 1. 전역 코드 전역 코드는 전..
2022.04.11 -
JavaScript var, const, let 키워드
모던 자바스크립트(저자 이웅모) 내용을 참고하였습니다. 💡️ var 변수 중복 선언 허용 함수 레벨 스코프 var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다 함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역변수가 된다 변수 호이스팅 변수 선언문이 스코프의 선두로 끌어 올려진 것처럼 동작한다 변수 호이스팅에 의해 변수 선언문 이전에 참조할 수 있다 런타임 이전에 자바스크립트 엔진에 의해 암묵적으로 "선언 단계"과 "초기화 단계"가 한번에 진행된다 ⇒ 가독성을 떨어뜨리고 오류를 발생시킬 여지를 남긴다 console.log(foo); // undefined foo = 123; console.log(foo); // 123 // 런타임 이전에 자바스..
2022.04.11 -
JavaScript 비동기 프로그래밍
모던 자바스크립트(저자 이웅모) 내용을 참고하였습니다. 💡️ 동기 처리와 비동기 처리 자바스크립트 엔진은 단 하나의 실행 컨텍스트 스택(Call Stack)을 갖는다 따라서 한 번에 하나의 태스크만 실행할 수 있는 싱글 스레드 방식으로 동작한다 싱글 스레드 방식은 한 번에 하나의 태스크만 실행할 수 있기 때문에 처리에 시간이 걸리는 태스크를 실행하는 경우 블로킹(blocking)이 발생한다 동기 처리 방식 현재 실행 중인 작업이 종료할 때까지 다음에 실행될 작업이 대기하는 방식을 동기처리라고 한다 장점: 동기 처리 방식은 작업을 순서대로 하나씩 처리하므로 실행 순서가 보장된다 단점: 앞선 작업이 종료할 때까지 이후 작업들이 블로킹된다 비동기 처리 방식 현재 실행 중인 작업이 종료되지 않은 상태라 해도 다..
2022.04.11 -
JavaScript 특징과 실행 환경
모던 자바스크립트(저자 이웅모) 내용을 참고하였습니다. 💡️ 자바스크립트 특징 웹 브라우저에서 동작하는 유일한 프로그래밍 언어 인터프리터 언어 멀티 패러다임 프로그래밍 언어 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원한다 프로토타입 기반의 객체지향 언어 싱글 스레드 방식 왜? 쉽게 사용하기 위해서대신 비동기 처리를 통해 쉽게 여러 요청을 처리할 수 있다! 멀티 스레드의 경우 동시성 문제를 해결해야 한다 교착 상태와 같은 멀티 스레드 환경에서 발생할 수 있는 복잡한 시나리오를 신경 쓸 필요가 없다 💡️ 브라우저, Node.js 실행 환경 자바스크립트는 브라우저 환경 또는 Node.js환경에서 실행할 수 있지만 둘의 용도가 다르다 브라우저와 Node.js 모두 자바스크립트의 코어인 ECMAS..
2022.04.11 -
API 버전 관리
버전관리가 필요한 경우 클라이언트 코드와 서버 코드가 제어하기 어려울 정도로 변경 되어야할 때 불특정 다수의 사용자가 접속하는 OpenAPI를 지원할 때 새로운 버전의 API를 도입하는 것은 클라이언트에게는 완곡한 표현의 서비스 종료 공지가 될 수 있으며, 서비스에게는 구버전을 더 이상 사용하지 않음을 알리는 공지가 될 수 있다. 버전 관리 전략 다양한 방법이 있는데 많이 사용하는 방법으로는 경로, 커스텀 헤더, 콘텐츠 네고시에이션 방법이 있다. 경로 v1 GET /v1/info v2 GET /v2/info 커스텀 헤더 v1 GET /info api-version : 1 v2 GET /info api-version : 2 콘텐츠 네고시에이션 v1 GET /info Accept: application/ex..
2022.02.07