Node.js 비동기 이벤트 실행
NodeJS 2012. 11. 19. 01:28
1. Node.js 비동기 실행 테스트
(function(){
var args = arguments;
// 첫 번째 비동기 요청
this.setTimeout(function(){
console.log('1 Async Start=' + new Date().getTime());
// 첫 번째 동기 CallBack(다음 비동기 요청을 지연(대기)시킨다.)
for (var i = 0; i < 10; i++){
console.log('1 Async Time=' + new Date().getTime());
}
}, 1001);
// 두 번째 비동기 요청
this.setTimeout(function(){
console.log('2 Async Start=' + new Date().getTime());
// 두 번째 비동기 CallBack
setTimeout(function(){
for (var i = 0; i < 10; i++){
console.log('2 Async Time=' + new Date().getTime());
}
}, 10);
}, 1000);
// 세 번째 비동기 요청
this.setTimeout(function(){
console.log('3 Async Start=' + new Date().getTime());
// 세 번째 비동기 CallBack
setTimeout(function(){
for (var i = 0; i < 10; i++){
console.log('3 Async Time=' + new Date().getTime());
}
}, 10);
}, 1000);
})();
2. 결과
1. (두, 세)번째 비동기 요청이 "요청 실행 시점"(1초)에 맞게 먼저 실행된다.(1353241683913, 1353241683915)
2. 첫 번째 비동기 요청이 실행된다.(1353241683915)
3. 첫 번째 요청에 대한 동기 CallBack이 실행된다.(Javascript Code Block(1353241683916))
4. "비동기 이벤트 실행 순서"에 따라 첫 번째 CallBack의 "동기식 Javascript Code Block" 실행 완료 후 (두, 세)번째 CallBack이 동시 진행 됐다.(1353241683925)
5. (두, 세) 번째 CallBack이 동시 실행 후 완료된다.(1353241683925)
Node.js 비동기 처리의 환상
http://seorenn.blogspot.kr/2011/05/nodejs_26.html
Javascript Single Thread
http://mohwaproject.tistory.com/entry/javascript-single-thead