동기화 프로그래밍
C, C #, Java와 같은 프로그래밍 언어는 동기화 프로그래밍이므로, 작성한 순서대로 작성됩니다.
-GET DATA FROM SQL.
//Suppose fetching data take 500 msec
-PERFORM SOME OTHER FUNCTION.
//Performing some function other will take 100 msec, but execution of other
//task start only when fetching of sql data done (i.e some other function
//can execute only after first in process job finishes).
-TOTAL TIME OF EXECUTION IS ALWAYS GREATER THAN (500 + 100 + processing time)
msec
비동기
NodeJ는 비동기 기능을 제공하며 본질적으로 블로킹이 아니며 시간이 걸리는 I / O 작업 (가져 오기, 쓰기, 읽기), nodejs가 유휴 상태로 유지되지 않고 작업이 완료 될 때까지 기다린다고 가정하십시오. 대기열에서 다음 작업을 실행하기 시작하고, 작업이 완료 될 때마다 콜백을 사용하여 알립니다. 다음 예제가 도움이 될 것입니다.
//Nodejs uses callback pattern to describe functions.
//Please read callback pattern to understand this example
//Suppose following function (I/O involved) took 500 msec
function timeConsumingFunction(params, callback){
//GET DATA FROM SQL
getDataFromSql(params, function(error, results){
if(error){
callback(error);
}
else{
callback(null, results);
}
})
}
//Suppose following function is non-blocking and took 100 msec
function someOtherTask(){
//some other task
console.log('Some Task 1');
console.log('Some Task 2');
}
console.log('Execution Start');
//Start With this function
timeConsumingFunction(params, function(error, results){
if(error){
console.log('Error')
}
else{
console.log('Successfull');
}
})
//As (suppose) timeConsumingFunction took 500 msec,
//As NodeJs is non-blocking, rather than remain idle for 500 msec, it will start
//execute following function immediately
someOtherTask();
간단히 말해 출력은 다음과 같습니다.
Execution Start
//Roughly after 105 msec (5 msec it'll take in processing)
Some Task 1
Some Task 2
//Roughly After 510 msec
Error/Successful //depends on success and failure of DB function execution
동기화가 600 (500 + 100 + 처리 시간) msec 이상을 확실히 차지하는 위치의 차이가 분명하여 비동기 시간이 절약됩니다.