얼마 전 node.js에서 개발하기 시작했습니다. 최근에 노드의 'event loop'및 비동기 메커니즘에 deepdive을 입력했습니다. 그러나 아직도 나는 sync and async callbacks 사이의 다른 것을 완전히 이해하지 못합니다.Node.js : 비동기 콜백 vs sync 콜백 vs process.nextTick vs setTimeout
이 예제에서는 node.js API에서 어떤 함수가 먼저 호출되는지 명확하지 않은 이유를 알았습니다.
maybeSync(true,() => {
foo();
});
bar();
그러나, 우리는이 있다면 :
그것은 그들이 항상 동기화 순서대로 실행 왜 나에게 분명하지 않다syncOrAsync(arg,() => {
if (arg) {
cb(arg);
return;
}
});
syncOrAsync(true, function(result) {
console.log('result');
});
console.log('after result);
, 나는 후 이벤트 루프 에 의해 실행해야 콜백 함수를 했더라도 스택이 비어 있습니다 (console.log ('after result')가 완료되었습니다). 비동기를 사용하려면 항상 process.nextTick(cb);
을 추가해야합니까? 그리고 process.nextTick과 setTimeout();
의 차이점은 무엇입니까?
타이머 나 외부 호출과 같이 실제로 비동기식 인 것이 없으면 코드는 항상 동기식입니다. 모든 자바 스크립트 코드의 기본 상태이므로 콜백을 추가해도 비동기가되지는 않습니다. – adeneo
그래서 항상'process.nextTick()'을 추가해야합니까? – wizard
아니요, 비동기식을 추가해야합니다. – adeneo