Back-end/Node.js

[Node.js] 동기와 비동기 / callback

poppy 2020. 12. 22. 17:35
반응형

동기와 비동기

- 동기: 동기적으로 일을 처리한다는 것은 어떤 일을 처리하고 그 일이 끝난 뒤에 다음 일을 처리하는 것을 말합니다. 다음 일은 현재 수행 하는 일이 끝낼 때까지 기다려야 합니다.

- 비동기: 비동기적으로 일을 처리하는 것은 현재 수행하는 일을 하는 동안 다른 일도 같이 처리할 수 있는 것을 말합니다. 현재 수행하는 일이 끝낼 때까지 기다리지 않고 여러 가지 일을 병렬적으로 처리할 수 있습니다.

node.js의 함수를 보면 동기적 사용과 비동기적 사용으로 나뉜 함수들이 있습니다. 동기적으로 사용하는 함수명에는 'Sync'가 붙어 있고, 비동기적으로 사용하는 함수에는 'Sync'가 붙어있지 않습니다.

 

다음 코드가 같은 작업을 수행하는 함수를 비동기적으로 사용할 때와 동기적으로 사용할 때를 보여줍니다.

var fs = require('fs');

//readFileSync - 동기적
console.log('A');
var result = fs.readFileSync('syntax/sample.txt', 'utf8'); //return 값을 줌
console.log(result);
console.log('C');

//readFile - 비동기적
console.log('A');
fs.readFile('syntax/sample.txt', 'utf8', function(err, result){
    console.log(result);
});
console.log('C');

동기적일 때와 비동기적 일 때의 출력이 다른 것을 확인할 수 있습니다.

 

Callback

var a = function(){ //익명함수
    console.log('A');
}
   
function slowfunc(callback){
    callback();
}
   
slowfunc(a);

익명함수는 이름이 없는 함수를 말합니다. callback() 함수가 실행되면 console.log('A'); 가 실행되는 것을 확인할 수 있습니다.

반응형