Node.js 비동기 이벤트 실행





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