2017-12-07 18 views

답변

3

아니요, Node.js 코드가 동기식으로 실행되지 않는다고 약속합니다. 이 표시되는 플로우를 쓸 수 있습니다. 동기식입니다. 이 작업을 수행 할 때

가 :

console.log(1); 
setTimeout(() => console.log(2)); 
console.log(3); 

Node.js를 먼저는 1, 로그 다음은 타임 아웃 이후에 발생할 수있는 함수를 등록, sequantially 코드를 실행, 그것은 큰 후 3 로그온 할 때 타이머 발생 - 함수 및 로그를 실행합니다. 2. 스레드가 개입되지 않았습니다.

약속 및 비동기 대기 상태에서 await을 사용하면 Node.js에 "이 기능을 일시 중지하고 약속을 기다릴 때 계속 진행 중입니다."라고 알리는 경우입니다. pause executing은 스레드 차단과 같지 않습니다. 운영 체제 수준에서 컨텍스트 전환이 발생하지 않습니다. 단지 기능을 추적하고 약속이 해결되면이를 호출합니다.

노드가 "our code - platform code"사이클로 실행되고 코드가 실행될 때까지 (예 : 대기 상태가 될 때까지) 플랫폼 코드가 실행됩니다 (예 : 타이머 및 I/O 검사). 그 코드는 코드 (예 : 일시 중지 된 비동기 함수)를 다시 호출하여 실행할 수 있습니다.

+0

내가 약속과 비동기를 사용해야하는지 여부를 결정하는 것은 무엇입니까? –

+1

'async/await'은 promises_의 맨 위에 있습니다. async를 사용할 때/이미 당신이 약속을 사용하고 있습니다 : –

+0

고마워요! =} –