지난 포스팅에서 자바스크립트 예외처리를 다뤘다. 그러나 비동기 상황에서의 예외처리는 조금 다르다. 하나씩 살펴보자. Promise 다음과 같이 Promise를 리턴하는 비동기 함수가 존재한다. const sleep = function(sec){ return new Promise((resolve, reject) => { setTimeout(() => { reject('Error 발생') }, 1000 * sec) }) } sleep(3); 실행시켜봤을 때, catch되지 않은 에러가 있다고 나온다. 그럼 sleep의 사용을 try-catch 문으로 감싸보자. try { sleep(3); } catch (e) { console.log(e); } 결과는 똑같다. 그 이유는 뭘까? 비동기작업은 함수가 실행 될 ..
자바스크립트로 코드를 작성하다보면 예외사항을 처리해야 할 때가 있다. 예를들어, 덧셈 기능을 하는 함수에 매개변수로 문자열이 들어온다면 예외를 발생시켜야 한다. 자바스크립트는 문자 + 숫자 연산도 가능하기에 예외처리를 하지 않으면 끔찍한 결과가 나타날 수 있다. 3 + 5 = 8 이지만, '3' + 5 = 35 라는 결과가 나온다. 따라서, 예외적인 상황에서는 적절하게 예외를 발생시켜야 할 필요가 있다. 예외는 throw 를 통해 발생시킬 수 있다. 덧셈함수로 예시를 보자. function add(a, b){ if (typeof a !== 'number' || typeof b !== 'number') throw '매개변수가 잘못됐어..!' return a + b } 이런식으로 throw 를 통해 예외를 ..
Promise 한국어로 약속 이라는 뜻이다. Promise는 자바스크립트에서 제공하는 비동기를 간편하게 처리할 수 있도록 도와주는 객체이다. Promise는 정해진 기간의 기능을 수행 한 후에 정상적으로 기능을 수행했다면 성공의 메세지와 함께 결과 값을 전달해주고 만약 기능을 수행하는 데에 문제가 생기면 에러를 전달 해준다. Promise에는 두가지의 포인트가 있다. state : promise의 상태 producer와 consumer의 차이 Promise의 상태는 다음과 같이 나뉜다 pending -> fulfilled or rejected 또 promise를 만드는 producer 와 이것을 사용하는 comsumer 로 나뉜다. 콜백 대신 Promise를 사용하는 코드예시를 살펴보자. const pr..
예를 들어 DB에서 조건에 맞는 값들을 얻어야 하는 상황이라고 가정해 보자. 고전적인 방법이지만 익숙한 방법은 for문을 통해 DB를 전체 탐색하며 하나하나 조건을 살펴보는 방법이 있을 것이다. 또 다른 방법으로는 모던 자바스크립트를 이용하여 함수를 통해 접근하는 것이다. const DB = [ { name: 'tom', age: '20', city: 'seoul', }, { name: 'go', age: '30', city: 'busan', }, { name: 'you', age: '24', city: 'seoul', }, { name: 'cam', age: '40', city: 'seoul', }, ] 다음 과 같은 유저 정보가 있을때 30세 이하가 사는 도시의 리스트 를 구해보자. for문을 통한 ..
hoising, scope, var 자바스크립트는 C언어 처럼 자료형, 타입에 대한 구분이 명확하지 않다. var x = 1 , var x = 'hello' 이 두개의 코드가 모두 가능하다. var x = 1 console.log(x) 이 코드의 결과는 어떠할까? 너무 당연하게 1 일 것이다. 그렇다면, console.log(x) var x = 1 이 코드는 어떠할까? 당연히 에러가 나야할까? 그렇지 않다. 결과는 undefined 이다. 분명 console.log(x) 전에 x에 대한 선언이 없음에도 오류가 나지 않는다. 그 이유는 var의 hoisting 이라는 특성 때문이다. hoisting이란 var에 대한 선언을 해당 scope의 맨 위로 끌어 올리는 것을 의미한다. 즉 위 코드는 아래의 코드와..
학부시절동안 보통 C언어나 C++를 많이 다뤄왔고 알고리즘 공부 역시 C++로 해왔기에 나에겐 절차지향과 동기적 처리 방식이 너무 익숙했다. 이번에 Node를 공부하면서 자연스럽게 그동안 겉핥기로 배워왔던 자바스크립트도 다시 공부하게 되었고 그 중 자바스크립트의 동시성 모델에 대해 공부했던 내용을 정리하려고 한다. C언어 같은 경우 프로그램 순서에 따라 함수들이 스택에 차곡차곡 쌓이니까 프로그램의 흐름을 예측하는 데 큰 어려움이 없다. 그러나 자바스크립트는 setTimeout과 같은 비동기적인 방식을 지원하기에 일반적인 코드 순서와 실행 결과는 다르게 나타날 수 있다. 그렇다면 자바스크립트는 비동기 작업을 지원하기 위해 멀티스레드를 사용할까 ? 답은 X다. 자바스크립트의 큰 특징 중 하나는 '단일 스레드..
- Total
- Today
- Yesterday
- 재귀
- Computer Architecture
- nest.js
- node.js
- 컴퓨터 통신
- nestjs
- boj
- 자바스크립트
- 투포인터
- dfs
- java
- 그래프
- 그리디
- 컴퓨터 구조
- 구현
- 벨만포드
- 자바
- typeORM
- 예외처리
- 중앙대학교
- 알고리즘
- ReactNative
- 동적계획법
- nodeJS
- 스레드
- 백준
- 시뮬레이션
- BFS
- 세그먼트 트리
- 백트래킹
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |