지난 포스팅에서 자바스크립트 예외처리를 다뤘다. 그러나 비동기 상황에서의 예외처리는 조금 다르다. 하나씩 살펴보자. 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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bfNNEl/btq9tH5ayr4/TWsLnO6bnGuPdP9VX3bqA0/img.png)
학부시절동안 보통 C언어나 C++를 많이 다뤄왔고 알고리즘 공부 역시 C++로 해왔기에 나에겐 절차지향과 동기적 처리 방식이 너무 익숙했다. 이번에 Node를 공부하면서 자연스럽게 그동안 겉핥기로 배워왔던 자바스크립트도 다시 공부하게 되었고 그 중 자바스크립트의 동시성 모델에 대해 공부했던 내용을 정리하려고 한다. C언어 같은 경우 프로그램 순서에 따라 함수들이 스택에 차곡차곡 쌓이니까 프로그램의 흐름을 예측하는 데 큰 어려움이 없다. 그러나 자바스크립트는 setTimeout과 같은 비동기적인 방식을 지원하기에 일반적인 코드 순서와 실행 결과는 다르게 나타날 수 있다. 그렇다면 자바스크립트는 비동기 작업을 지원하기 위해 멀티스레드를 사용할까 ? 답은 X다. 자바스크립트의 큰 특징 중 하나는 '단일 스레드..
- Total
- Today
- Yesterday
- Computer Architecture
- 백트래킹
- 자바
- nestjs
- 벨만포드
- 재귀
- node.js
- nodeJS
- BFS
- typeORM
- 시뮬레이션
- java
- 투포인터
- dfs
- boj
- 세그먼트 트리
- 백준
- 그리디
- 컴퓨터 구조
- ReactNative
- 알고리즘
- 컴퓨터 통신
- 자바스크립트
- 그래프
- nest.js
- 스레드
- 동적계획법
- 구현
- 예외처리
- 중앙대학교
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |