728x90
반응형
SMALL
Do it! Node.js 프로그래밍 입문 공부단 4일차 입니다.
동기처리
동기처리란 작성한 순서대로 작업을 처리하는 것을 동기처리라고 합니다. 자바스크립트는 기본적으로 동기처리 방식입니다.
console.log("first")
console.log("second")
console.log("third")
자바스크립트는 싱글 스레드 언어이기 때문에 위와 같은 결과가 나옵니다. 스레드란 하나의 작업이 실행되는 최소단위입니다. 자바스크립트는 이런 스레드가 하나밖에 없어서 한 번에 하나의 작업만 처리할 수 있습니다. 반면에 자바를 비롯한 대부분의 백엔드 프로그래밍 언어는 멀티 스레드입니다. 그래서 동시에 여러 작업을 수행할 수 있습니다.
비동기처리
console.log("first")
setTimeout(() => {
console.log("second")
}, 3000)
console.log("third")
순서는 first -> second -> third로 작성했고 단지 second의 작업이 3초 뒤에 실행되는 코드입니다.
순서대로 처리하기 때문에 first가 먼저 출려됩니다.
이 다음 second를 출력하려고 했지만 setTimeout() 함수로 인해 시간이 걸리는 작업으로 판단해 따로 빼둡니다.
그 다음 작업인 third를 출력합니다.
third를 출력 후 아까 빼둔 second를 출력합니다.
setTimeout()에서 시간을 0초로 지정하기
console.log("first")
setTimeout(() => {
console.log("second-2")
}, 0)
console.log("third")
이렇게 0초로 지정해도 결과는 같습니다. 이유는 setTimeout() 자체가 시간 지연을 포함하는 함수여서 즉시 처리할 수 있는 작업을 다 끝낸 후 처리합니다.
setTimeout()처럼 처음부터 비동기로 처리할 목적으로 만든 함수뿐만 아니라 비동기로 동작하는 함수를 직접 작성할 수도 있습니다.
시간이 오래 걸려도 A함수 뒤에 B함수를 연결해서 실행하도록 만드는 것이 비동기 처리입니다.
비동기처리로 직접 동작하게 하려면 콜백함수, 프라미스, async/await를 사용해야 합니다.
const fs = require("fs")
fs.readdir("./", (err, files) => {
if(err) console.log(err)
console.log(files)
})
console.log("Code is done")
콜백함수의 예시 입니다. 내용은 현재 디렉터리 내부에 파일을 읽어오는 코드입니다. 파일들을 빨리 읽어오려고 해도 먼저 fs.readdir()를 실행한 후 읽어와야 합니다. 이렇게 콜백함수를 사용해서 비동기 처리를 할 수 있습니다.
728x90
반응형
LIST
'Node.js' 카테고리의 다른 글
[Node.js] 노드제이에스 - 노드의 비동기 패턴 (2) | 2024.02.06 |
---|---|
[Node.js] 노드제이에스 - 논블로킹I/O (0) | 2024.02.06 |
[Node.js] 노드제이에스 - 라우팅 (0) | 2024.02.05 |
[Node.js] 노드제이에스 - 요청 객체와 응답 객체 (0) | 2024.02.05 |
[Node.js] 노드제이에스 - http 모듈로 서버 만들기 (0) | 2024.02.05 |
댓글