[Node.js] 동기와 비동기, Call back, Post 전송 데이터
동기와 비동기
- 동기: 순차적으로 진행
- 비동기: 순차적 X 아래 코드로 설명하겠읍니다
//1번
console.log('A');
var result = fs.readFileSync('syntax/sample.txt', 'utf8');
console.log(result);
console.log('C');
//2번
console.log('A');
fs.readFile('syntax/sample.txt', 'utf8', function(err, result) {
console.log(result);
});
console.log('C');
1번과 2번을 실행하면 다른 결과가 나온다. (sample.txt 내용: B)
- 1번: A B C
- 2번: A C B
- 왜 그럴까? 1번은 readFileSync 함수를 이용하였는데 동기적으로 동작한다. 그래서 순서대로 A B C를 실행한 것이다. 2번은 비동기적으로 동작하는데 A가 실행된 이후에 readFile 함수가 실행되지만 출력이 되기 전에 C가 먼저 출력이 되고 그 뒤에 B가 출력이 되는 것이다.
이것처럼 동기는 순차적으로 앞의 일이 끝나야 뒤의 일이 실행이 되는 것이다. 비동기는 비유하자면 오래 걸리는 일은 지켜만 보고 있지 않고 그게 될 동안 다른 일 먼저 하는 것이다. 병렬적! node.js는 비동기적인 처리를 하기 위한 좋은 기능들을 가지고 있다.
Call Back 함수 구조
코드로 설명 ㅇㅇ
var a = function() {
console.log('A');
}
function slowfunc(callback) {
callback();
}
slowfunc(a);
- 자바스크립트는 변수에 함수를 저장할 수 있다.
- slowfunc(a): slowfunc 함수 인자로 a를 받았다. callback 함수가 a이다.
- 그러면 slowfunc 함수가 실행된 후에 a가 실행된다.
Post 방식으로 전송된 데이터 받기
코드로 설명 ㄱㄱ
//main.js 일부
else if (pathname === '/create_process') {
//form의 submit 버튼을 클릭하면 /create_process로 데이터를 전송함.
//그러니까 그 버튼을 클릭했을 때 조건 만족
var body ='';
request.on('data', function(data){
body = body + data;
}); //body 변수에 조각조각 데이터가 들어올 때마다 이어서 붙인다.
request.on('end', function(){
var post = qs.parse(body); //body(=입력값)를 post에 저장. 즉 post data임.
var title = post.title; //title에 입력한 값
var description = post.description; //description에 입력한 값
console.log(post);
});
response.writeHead(200); //파일을 성공적으로 전송
response.end('success');
}
콘솔 출력: [Object: null prototype] { title: 'ggg', description: 'ggggg' } // 폼에 입력한 값이 배열으로 뜬다.
웹 페이지 출력: success
Author And Source
이 문제에 관하여([Node.js] 동기와 비동기, Call back, Post 전송 데이터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@iwantobuymac/Node.js-동기와-비동기-Call-back-Post-전송-데이터저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)