2016-10-13 2 views
1

나는 노드 JS노드 JS 콜백은 동기식

var PrintFirstName = function(first_name , cb) { 
    cb("First name is "+first_name) ; 
} 
PrintFirstName("Tushar" , function(res){ 
    for(var i = 0 ; i < 100000; i++) { 
     console.log(i); 
    }  
    console.log("processing callback"); 
}); 
console.log("Code continue....") ; 

콜백 자연에서 비동기 적으로 실행 내 예상 순서는, 코드를 계속해야한다 번호 1-10000를이 코드를 다음 처리하는 콜백

하지만 위의 코드를 실행하면 콜백을 처리 한 다음 코드가 계속 실행되어 1-10000이라는 숫자가 출력됩니다. 코드 계속을 먼저 ​​실행해야합니다. 콜백이 완료되기를 기다리는 이유는 무엇입니까?

답변

1

작성한 코드는 비동기 적이 지 않으므로 일반적으로 javascript의 비동기 함수는 setTimeout 또는 setInterval에 대한 expression 인수를 생성해야합니다. 귀하의 경우에는

: 개체 방법에 전화를 걸 때

var PrintFirstName = function(first_name , cb) { 
    cb("First name is "+first_name) ; 
} 

PrintFirstName("Tushar" , function(res){ 
     for(var i = 0 ; i < 100000; i++) { 
      console.log(i); 
     }  
setTimeout(function() {  console.log("processing callback");}, 0); 
}); 

console.log("Code continue....") ; 

그러나 명심이

여기 좀 http://devedge.primedirective.net/toolbox/examples/2003/CCallWrapper/index.html

을 가지고 작동하지 않습니다