본문 바로가기
Dev/Nodejs

[Nodejs] 동기 비동기 - readFile(), Callback

by Ellen571 2020. 8. 3.
반응형

Node.js - 동기와 비동기 그리고 콜백

 

 

동기(Synchronous) : 일의 순서대로 처리

비동기(asynchronous) : 일을 병렬로 동시에 처리

 

Ex) readFile()

- 비동기적 fs.readFile(path[,options],callback)

- 동기적 fs.readFileSync(path[,options])

 

비동기는 callback이 있음

동기는 이름에 Sync가 붙으며 callback이 없음 

 

 

동기 readFileSync

 

var fs = require('fs');

console.log('A');

var result = fs.readFileSync('syntax/sample.txt','utf8');
// fs모듈의 readFileSync함수를 사용해
// 첫번째 인자로 읽을 파일(syntax/sample.txt)을 가져옴
// 파일의 내용은 result에 담김(sample.txt 내용은 B)

console.log(result);

console.log('C');

 

[결과]

A

B

C

 

 

비동기 readFile

 

var fs = require('fs');

console.log('A');

fs.readFile('syntax/sample.txt','utf8', function(err, result){
// fs모듈의 readFile함수를 사용해
// 첫번째 인자로 읽을 파일(syntax/sample.txt)을 가져옴
// 콜백함수의 두번째 인자로 파일의 내용(result)을 가져옴

	console.log(result);   // sample.txt 내용은 B

});

console.log('C');

 

[결과]

A

C

B

-> readFile이 실행되고 처리하는 동안 console.log('C')가 먼저 실행됐기 때문에

 

 

Callback

- 작업이 끝난 후에 처리할 내용

 

Ex)

readFile('syntax/sample.txt', 'utf8', function(err, result){

    console.log(result);

});

- 1. readFile이란 기능을 이용해서 'systax/sample.txt'를 읽어라

- 2. 이 작업이 끝나면 function(err, result){}를 실행시켜라

 

var a = function(){   // a라는 이름의 함수
	console.log('A');
}

function slowfunc(callback){   // slowfunc가 실행이 끝난 후에
	callback();   // 인자로 받은 callback을 실행해라
}

slowfunc(a);   // callback은 a가 되고, a()가 실행
반응형

'Dev > Nodejs' 카테고리의 다른 글

[Nodejs] Form - GET/POST  (0) 2020.08.04
[Nodejs] Package Manager - NPM, PM2  (0) 2020.08.03
[Nodejs] 파일 디렉토리 읽기 - readdir()  (0) 2020.08.03
[Nodejs] 페이지 구현 - Query string  (0) 2020.08.03
[Nodejs] Not found - Pathname  (0) 2020.08.03