1. 동기(Syncronous)와 비동기(Asyncronous)
동기적으로 일을 처리한다 ?
▶ 어떤 일을 처리하고 그 일이 다 끝난 후, 다음 일을 처리한다.
▶ 오래걸리는 작업이 있을 경우, 수행중인 작업이 끝날 때까지 기다린다.
비동기적으로 일을 처리한다 ?
▶ 어떤 일을 컴퓨터나 다른 사람에게 시키고 , 다음 일을 처리한다.
▶ 동시에 일을 처리하며(병렬적) 시간 효율성을 높인다.
→ Node.js 에서는 비동기적 처리를 하기위한 좋은 기능들을 가지고 있다.
Node.js 에서의 사용 예제
Node.js 공식 홈페이지 → 문서 → 자신이 사용하는 Node.js 버전 선택
→ File System → Sync 검색
▶ ~Sync 함수는 동기적 처리
여기서는 readFileSync과 readFile을 사용해보자.
1) 동기적 처리
var fs = require('fs');
// readFileSync : 동기 처리
console.log('A');
var result = fs.readFileSync('syntax/sample.txt', 'utf8');
console.log(result);
console.log('C');
▶ sync.js 파일 내용
- readFileSync()을 이용해 파일 읽기 기능 수행
- 동기적 처리 방식 이해를 위해 console.log() 각각 수행
- syntax/sample.txt 파일에는 문자 'B'만 입력되어 있음
- A 출력 → B 출력 → C 출력
2) 비동기적 처리
var fs = require('fs');
// readFile 비동기 처리
console.log('A');
fs.readFile('syntax/sample.txt', 'utf8', function(err, result){
console.log(result);
});
console.log('C');
▶ async.js 파일 내용
- readFile()을 이용해 파일 읽기 기능 수행
- 비동기 처리 방식 이해를 위해 console.log() 각각 수행
- readFileSync()와 다르게 콜백함수를 3 번째 인자로 하며 리턴 값이 존재하지 않음
- sample.txt 파일 내용은 위와 같음
- A 출력 → C 출력 → B 출력
- A 출력 후 readFile 실행하면서 결과를 가져오기 전에 C 가 출력된 후 작업이 끝나 B 출력 됨
▷ Node.js의 성능 최대화를 위해서는 비동기 방식으로 작업을 해야 한다 !!
* 생활코딩 WEB2-Node.js-28.1, WEB2-Node.js-28.2 강의 기반으로 작성됨
'JavaScript > Node.js' 카테고리의 다른 글
[Node.js] 쿠키(Cookie) 사용하기 (0) | 2023.02.21 |
---|---|
[Node.js] 보안 문제, sanitize-html 사용하기 (0) | 2023.01.20 |
[Node.js] 파일 쓰기(fs.writeFile), 파일 삭제하기(fs.unlink) (0) | 2023.01.16 |
[Node.js] 파일 읽기(fs.readFile), 파일 목록 알아내기(fs.readdir) (0) | 2023.01.11 |