프로그래밍/Nodejs

생활코딩 - Server Side JavaScript 3

seungdols 2016. 5. 10. 00:34

생활 코딩 Server Side Language

3강

콜백이란? (Callback)

쉽게 말하자면, 콜백이란 다른 함수의 인수로 실행 가능한 코드 블럭(이를 테면 함수)을 전달하여
전달 받은 함수에서는 콜백함수를 실행 할 수도 하지 않을 수도 있다. 결론적으로 말하자면, 콜백은 함수를 인수로 넘기는 것을 말한다. 콜백이 가능하려면 언어 자체에서 First-Class(일급 객체)여야 가능하다. Lambda형식으로 인수를 넘기는 것도 결국은 익명함수라 할 수 있다.


a = [3,1,2];

function comp(v1, v2){

return v2-v1;

}

a.sort(comp);

console.log(a);

a = [3,1,2]; 

a.sort(function(v1,v2){return v2-v1;}); //sort 함수에 익명함수가 인자로 전달

console.log(a);

이러한 형태에서 sort 함수는 어떻게 호출하는 걸까?


function sort(callback){

    callback();//인자로 전달 된 함수를 호출

}

즉, 위에서 코드를 보면 comp 함수가 콜백함수가 된다.

동기 (Synchronuous) vs 비동기 (Asynchronous)

동기

  • 정해진 순서대로 일을 처리 하는 방식

비동기

  • 작업을 시작하여 오래 걸리는 작업을 다른 녀석에게 일을 위임하고, 제어는 다시 요청을 처리 하게 되고, 위임한 일이 끝날 때 다시 처리를 한다.

var fs = require('fs');

//Sync

console.log(1);

var data = fs.readFileSync('data.txt',{encoding:'utf8'} );

console.log(data);

//Async

console.log(2);

fs.readFile('data.txt', {encoding:'utf8'}, function(err, data){

  console.log(3);

  console.log(data);

})

console.log(4);

// fs.readFile('data.txt', {encoding:'utf8'}, (err, data)=>{//lambda expression

//   console.log(data);

// })
반응형