본문 바로가기

전체 글

(28)
for await(변수 of 프로미스 배열) for await(변수 of 프로미스 배열) resolve된 프로미스가 변수에 담겨 나옴 await을 사용하기 때문에 async 함수 안에서 해야함 const promise1 = Promise.resolve('성공1'); const promise2 = Promise.resolve('성공2'); (async () => { for await (promise of [promise1, promise2]){ console.log(promise); } })();
async function async function 변수 = await 프로미스; 인 경우 프로미스가 resolve된 값이 변수에 저장 변수 await 값; 인 경우 그 값이 변수에 저장 async function main(){ try{ const result = await promise; return result; }catch (error){ console.log(error); } } main().then((name)=>...)
프로미스 프로미스 내용이 실행은 되었지만 결과를 아직 반환하지 않은 객체 Then을 붙이면 결과를 반환함 실행이 완료되지 않았으면 완료된 후 Then 내부 함수가 실행됨 Resolve(성공리턴값) -> then으로 연결 Reject(실패리턴값) -> catch로 연결 Finally 부분은 무조건 실행됨 const condition = true; const promise = new Promise((resolve, reject)) => { if(condition) { resolve('성공'); }else{ reject('실패'); } }); promise .then((message)=>{ console.log(message); //성공(resolve)한 경우 실행 }) .catch((error)=>{ console...
클래스 클래스 Class 내부에 관련된 코드들이 묶임 Super로 부모 Class 호출 Static 키워드로 클래스 메서드 생성 class Human{ constructor(type = 'human') { this.type = type; } static isHuman(human){ return human instanceof Human; } breathe(){ alert('숨쉬기') } } class Zero extends Human{ constructor(type, firstName, lastName) { super(type); this.firstName = firstName; this.lastName = lastName; } sayName(){//자식 클래스에서 오버라이드된 메서드 super.breathe()..
구조분해 할당 구조분해 할당 1번 const example = {a: 123, b: {c: 135, d:146} const a = example.a; const d = example.b.d; 위의 것을 구조분해 const {a, b: {d}} =example; console.log(a); //123 console.log(d); //146 2번 arr =[1,2,3,4,5] const x = arr[0] const y = arr[1] const z = arr[4] 위의 것을 구조분해 const [x,y, , ,z] = arr; //비어 있는 것은 객체대입 안하겠다는 의미
호출스택, 이벤트 루프 자바스크립트 1. 호출 스택 function first() { second(); console.log('첫 번쨰'); } function first() { third(); console.log('두 번쨰'); } function first() { console.log('세 번쨰'); } first(); Anonymous은 가상의 전역 컨텍스트(항상 있다고 생각하는게 좋음) 함수 호출 순서대로 쌓이고, 역순으로 실행됨 함수 실행이 완료되면 스택에서 빠짐 LIFO 구조라서 스택이라고 불림 function run() { console.log('3초 후 실행'); } console.log('시작'); setTimeout(run, 3000); console.log('끝'); 위 코드의 결과는 시작 -> 끝 -> ..
백엔드 아키텍쳐 계층형 아키텍처 계층형 아키텍처(layered architecture)는 레이어드 아키텍처라고하며 소프트웨어를 몇 개지 계층으로 나누는 방식 가장 흔한 아키텍처 형태로 단순하고 이해하기 쉬움 각 계층이 논리적으로 분리되어 있어, 소규모 애플리케이션에서 많이 채택 각 계층에서는 주어진 역햘을 수행하며, 의존성이 단방향이어야함(예: 프리젠테이션 계층은 비즈니스 계층에만, 비즈니스 계층은 영속성 계층에만 의존성을 가지게됨) 장점: 계층이 분리 및 격리되어 있기 때문에 복잡도가 감소하며 계층 내에서는 관련된 코드의 응집도가 높아짐 테스트가 쉬움 단점: 다른 아키텍쳐에 비해 어플리케이션 규모가 커지게 되면 계층이 거대해지면서 유지보수가 힘들어지고 개발속도가 떨어짐 하나의 큰 덩어리를 여러 개 배포해야 하므로 배포..
노드의 특징 및 서버로서의 노드 장단점 노드의 특징 1. 이벤트 기반 이벤트의 예: 클릭, 네트워크 요청, 타이머 등 이벤트 리스터: 이벤트를 등록하는 함수 콜백 함수: 이벤트가 발생했을 때 실행될 함수 2. 논블로킹 I/O(입력(Input)/출력(Output)) 논블로킹: 오래 걸리는 함수를 백그라운드로 보내서 다음코드가 먼저 실행되게 하고, 나중에 오래걸리는 함수를 실행 -논블로킹 방식 하에서 일부 코드는 백그라운드에서 병렬로 실행됨 -일부코드 : I/O작업(파일 시스템 접근, 네트워크 요청), 압축, 암호화 등 -나머지 코드는 블로킹 방식으로 실행됨 -따라서 I/O작업이 많을때 노드의 활용성이 극대화 A함수가 B함수를 호출하면, B 함수는 실행되지만, 제어권은 A 함수가 그대로 가지고 있는다. A함수는 계속 제어권을 가지고 있기 때문에 ..