synchronous (동기적)
우리가 일을 할 때를 생각해보자
일 10분 -> 일 2시간 -> 일 1시간 -> 일 40분
일이 다 끝날때까지 기다리다가 다 끝나면 다른 일 시작
(일이 오랫동안 처리되어야 하는 경우에도 기다렸다가 다음 일 처리)
asynchronous (비동기적) - 효율적 but 복잡
일 10분 -> 일 2시간
-> 일 1시간
일이 끝날때까지 기다리지 않고 다음 일 진행
(병렬적으로 동시에 여러가지 일 처리)
동기 & 비동기 가 코드 level 에서 어떤 차이를 갖는지 ?
https://nodejs.org/dist/latest-v12.x/docs/api/https://nodejs.org/dist/latest-v12.x/docs/api/fs.html
위의 링크에 들어가서 확인해 보면
이름 뒤에 sync가 붙는 경우가 있고 아닌 경우가 있다.
readFileSync (동기적)
fs.readFileSync(path[, options]);
// syntax directory 안에 sample.txt가 저장되어있음
// sample.txt 내용은 'B'
console.log('A');
var result = fs.readFileSync('syntax/sample.txt','utf8');
console.log(result);
console.log('C');
A B C 순서로 출력됨
readFile (비동기적)
fs.readFile(path[,options],callback);
readFileSync는 return 값을 반환하는데,
반면에 readFile은 return값을 주지 않기 때문에 함수를 세번째 인자로 주어야 함
함수의 첫번째 parameter : error가 있다면 'err'를 인자로 제공
두번째 parameter : 파일의 내용을 인자로서 구분해주도록 약속되어있음
// syntax directory 안에 sample.txt가 저장되어있음
// sample.txt 내용은 'B'
console.log('A');
fs.readFile('syntax/sample.txt','utf8',function(err,result){
console.log(result);
});
console.log('C');
A C B 순서로 출력됨
readFile이 동작이 완료되기 전에 'C 출력'이 실행됨
callback
var a = function(){
console.log('A');
}
위 코드를 보면 "a라는 변수에 값으로써 함수를 정의 : javascript에서는 함수 = 값" 이라는 점을 알 수 있다.
var a = function(){
console.log('A');
}
function showfunc(callback){
callback();
}
showfunc(a);
-위 코드 해설-
showfunc라는 오랜시간이 걸려 동작하는 함수가 실행되고
callback 이라는 parameter는 a가 가리키는 함수를 가리키게 된다.
callback()이라는 함수를 호출하면 a가 가리키는 함수가 실행된다.
'Web > Node.js' 카테고리의 다른 글
[Node.js] 글 생성 (0) | 2020.07.31 |
---|---|
[Node.js] Package Manger (0) | 2020.07.30 |
[Node.js] function을 이용해서 기존 코드 가독성 높이기 (0) | 2020.07.25 |
[Node.js] Node.js의 파일 목록사용 (0) | 2020.07.25 |
[Node.js] web application - 홈페이지 구현(undefined 해결) (0) | 2020.07.24 |