
//add1, 2, 3, 4는 전부 같은 함수
function add1(x, y) {
return x + y;
}
const add2 = (x, y) => {
return x + y;
};
// 중괄호 뒤에 바로 return이 오는 경우 생략 가능
const add3 = (x, y) => x + y;
const add4 = (x, y) => (x + y);
자바스크립트 비동기 처리에 사용되는 객체, 비동기 처리의 단점을 보완하여 동기적으로 처리할수있게 도와준다.
특정 코드의 실행이 완료될때까지 기다리지 않고 다음 코드를 먼저 수행하는 특성을 말함), (요청 후 정상처리 되기도 전에 화면에 빈 데이터를 표시하는 상태)
비동기 작업 예시
브라우저에서는 이른바 ajax라 불리웠던 XMLHttpRequest 객체 를 활용하여 비동기적으로 요청을 보내고 받을 수 있을테고, 최근에는 Fetch API 를 사용하는 방법들이 늘고 있습니다. Node.js 에서는, 예를 들자면, 파일을 다룰 때 쓰는 모든 함수 들이 비동기로 구성되어 있습니다. 파일을 읽으려먼 우리의 하드디스크나 SSD를 동작시켜야 하는데 이 때 CPU 입장에서는 SSD가 너무 느려터져서 속이 답답할 지경일 겁니다. 한 번에 여러 개의 파일을 읽을 수 있다면 좋겠지요?
비동기 작업의 단점
promise가 필요한 이유?
비동기 작업의 특징은 작업이 언제 끝날지 모르기 때문에 일단 배를 떠나보낸다고 이야기했습니다. 그럼 그 이후에 이 작업이 성공하거나 실패하는 순간에 우리가 또 뒷처리를 해줘야겠죠? Promise 가 끝나고 난 다음의 동작을 우리가 설정해줄 수 있는데, 그것이 바로 then 메소드와 catch 메소드입니다. 서버에서는 받아온 데이터를 처리하기 위해, fetch등으로 서버에서 데이터를 요청하고 받아온 뒤 처리하기 위하여 Promise가 필요하다.
promise의 장점
promise는 .then() .catch()등 promiseAPI를 사용할수있어 코드의 양을 줄이고 가독성을 증가시킬수있다.
promise의 3가지 상태
async
프로미스 함수의 일종으로, 함수를 선언할 때 붙여서 비동기 작업을 만드는 키워드이다.
await
Promise 가 끝날 때까지 기다리게 한다. async 함수 내부에서만 사용할 수 있다.
async/await의 필요성
프로미스 코드를 축약할 수 있다.
function findAndSaveUser(Users){
Users.findOne({})
.then((user) => {
user.name = 'zero';
return user.save();
})
.then((user) => {
return Users.findOne({gender:'m'});
})
}
async function findAndSaveUser(Users) {
let user = await Users.findOne({});
user.name = 'zero';
user = await user.save();
user = await Users.findOne({ gender:'m' });
}

url에 대한 기본적인 설명 추가해주면 좋을듯
GET을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전송되며, 이 부분을 쿼리 스트링 (query string) 이라고 부른다.
문제) {A:'B', C:'D', E:'F'} 를 쿼리스트링 표현으로 바꾸면 ?A=B&C=D&E=F
문제) ?A=B&A=D&E=F 를 쿼리스트링 표현으로 바꾸면 {A:'[B','D'], E:'F'}
1) Hash
해시함수는 임의 길이의 입력값을 받아 고정된 길이의 출력값(해시)으로 매핑하는 함수

취약점
프론트-서버 개발에서 거의 사용하지 않음...그 이유 자세하게 말해주기
Thread Pool 용도
CPU 또는 I/O intensive 한 작업에 내부적으로 쓰인다.
(개발자가 직접 컨트롤하지 않아도)
nodejs eventloop 에서 처리하기에 무거운 작업이 자동으로 thread pool 내의 thread 에 위임된다.
ex) 'crypto' 모듈의 해시함수 연산, 기타 'fs' 모듈 파일 관련 작업
예외(Exception): 처리하지 못한 에러
노드 프로세스/스레드를 멈춤
노드는 기본적으로 싱글 스레드라 스레드가 멈춘다는 것은 프로세스가 멈추는 것
에러 처리는 필수
서버- 클라이언트 질문 복습

질문) 백엔드는 그럼 response를 해주는지 request를 해주는지
포트: 서버 내에서 프로세스를 구분하는 번호
서버를 실행하는 순간 프로세스를 올려주고, 프로세스는 포트 하나를 잡아먹는다.