동기와 비동기
기초/Node.js2021. 6. 21. 21:19
동기(synchronous) : 하나의 일을 마칠 때까지 기다렸다가 그 일이 끝나면 순서대로 다음 일을 처리하는 것
비동기(asynchronous) : 기다리지 않고 다른 일을 동시에 진행하면서 순서대로 처리하는 것(=효율적이고 복잡하다)
https://nodejs.org/dist/latest-v14.x/docs/api/fs.html#fs_fs_readfilesync_path_options
예시로, readFile을 살펴보자.
readFile과 readFileSync가 있다. Sync는 callback이 없다.
node js는 비동기적으로 처리하는 것을 선호한다. → 동기적 처리를 따로 명령어를 만들어놨으니...
fs.readFileSync(path[,options])
//readFileSync
console.log("A");
var result = fs.readFileSync("syntax/sample.txt", "utf-8");
console.log(result);
console.log("C");
//결과는 ABC
fs.readFile(path[, options], callback)
//readFile
console.log("A");
var result = fs.readFile("syntax/sample.txt", "utf-8"
, function (err, result) {
console.log(result);
});
//readFileSync는 return값을 주지만 readFile은 주지 않는다.
console.log(result);
console.log("C");
//결과는 ACB
console.log외에 별도로 알아서 작동하고 있다가 나중에 작업이 완료되면 함수가 호출되면서 결과를 출력하는 것.
readFileSync는 return값을 주지만 readFile은 주지 않는다.
대신 함수를 세 번째 인자로 주어야 한다.
파일을 읽는 작업이 끝나면 세 번째 인자로 준 함수를 node js가 실행시키면서
에러가 있다면 에러를 제공하고 파일의 내용을 인자로 제공하도록 약속되어 있다.
function a() {
console.log("A");
}
//위의 a라는 함수와 똑같이 이름만 빼 보자.
function () {
console.log("A");
}
//함수의 기능, 함수의 내용 모두 똑같지만 이름이 없다 = 익명함수
//하지만 이름이 없으면 호출할 수가 없으니 아래와 같이 만들어 준다.
var a = function () {
console.log("A");
}
//a라는 변수의 값으로 함수를 정의
a가 담고 있는 값인 함수를 호출할 수 있다.
콜백(callback, 나중에 전화해)
"알아서 시킨 내용을 진행하고 있다가 완료되면 나한테 알려줘" 라는 의미.
//엄청나게 오래 걸리는 함수가 있다고 해 보자.
//이 기능의 실행이 끝난 다음에 일이 끝났으니 다음 일을 하세요 라고 하고 싶다면,
//콜백을 받으면 된다!
function slowfunc(callback){
callback();
}
slowfunc(a);
'기초 > Node.js' 카테고리의 다른 글
모듈 (0) | 2021.06.24 |
---|---|
Javascript 함수의 기본 문법 (0) | 2021.06.20 |
Boolean, 비교연산자, 조건문 (0) | 2021.06.16 |
댓글()