node.js를 배우고 있습니다. 지금까지 콜백의 의미를 이해했지만 콜백이 동 기적으로 (콜백이 반환 될 때까지 진행되지 않는 호출자) 또는 비동기 적으로 (콜백을 만들어 코드를 진행하는) 실행되는지 여부를 확신하지 못합니다.콜백이 동 기적으로 또는 비동기 적으로 실행되는지 식별하는 방법은 무엇입니까?
답변
. Some callbacks are asynchronous, others are not. 문서를 확인해야합니다. 은입니다.
종종 함수의 서명으로 구분할 수 있습니다. 콜백이 계산 결과와 함께 한 번만 호출되고 콜백 함수는 아무 것도 반환하지 않으면 콜백은 일반적으로 비동기 적으로 호출됩니다 (setTimeout
, readFile
등). 함수가 결과를 즉시 반환하면 일반적으로 콜백은 여러 번 동 기적으로 호출됩니다 (Array::sort
, Array::map
). 중요한 값을 생성합니다. 물론 예외가 규칙을 증명하고 때로는 쉽게 알 수 없습니다. setInterval
대 Array::forEach
(둘 다 반환하지 않고 콜백을 여러 번 호출합니다.)
당신은 그것을 위해 플래그를 사용할 수 있습니다 : 당신은 정말 함수 호출을보고 말할 수
var async = false;
someFunction(function() {
console.log(async ? 'async' : 'sync');
});
async = true;
플래그를 사용하고 싶지 않습니다. – avinashkrsharma
"비동기 함수 호출"및 "비동기 IO"용어에 많은 혼란이 있기 때문에 질문을 다시 말하려고합니다.
다음과 같이 코드를 작성하고 "foo"소스 코드를 보지 않고 출력이 "Line 1 \ nLine2"또는 "Line 2 \ nLine1"이 될 것이라고 말할 수 있습니까? ?
var t1 = asyncTestCapture();
foo(function() {
console.log("Line 1");
});
console.log("Line 2");
var out12vsOut21 = asyncTestVerify(t1);
대답 번호 1 : 콜백 매개 변수 (배열의 대해 forEach,지도, 등, 문자열 대용품, JSON의 자극성)
대답으로 잘 알려진 표준 기능을 제외하고 순서에 의존하지 않는 2 번 : (I 아주 간단하게 코드를 테스트하고 Node.js를 특정,하지만 나는 그것이 "out12vsOut21"질문에 대답 할 수 믿고 있습니다 또한 내가 문서화되지 않은 노드 기능을 사용하고 있습니다.)
function asyncTestCapture() {
return {
activeHandles: process._getActiveHandles(),
activeRequests: process._getActiveRequests()
};
}
function asyncTestVerify(handles1) {
var handles2 = asyncTestCapture();
return handles2.activeHandles === handles1.activeHandles && handles2.activeRequests === handles1.activeRequests
}
나 ' 다시 반복 할 것입니다 : 위의 코드가 필요한 경우 잘못된 것이 있습니다. 귀하의 디자인. "out12vsOut21"명령을 알 필요가 없습니다. 코드가 "async 또는 foo is not"에 종속되지 않는 방식으로 빌드하십시오.
- 1. 비동기 호출을 다시하는 방법은 동 기적으로 처리됩니다.
- 2. 비동기 메서드를 동 기적으로 호출
- 3. System.IO.FileSystemWatcher의 만든 이벤트가 동 기적으로 또는 비동기 적으로 실행됩니까?
- 4. 비동기 메서드를 동 기적으로 구현
- 5. 비동기 입력을 동 기적으로 처리하십시오.
- 6. Firebase에서 동 기적으로 데이터를 검색하는 방법은 무엇입니까?
- 7. 소켓 비동기 작업이 동 기적으로 완료됩니까?
- 8. 비동기 메서드를 다시 작성하여 값을 동 기적으로 반환하는 방법은 무엇입니까?
- 9. Sitecore 이벤트가 동 기적으로 처리됩니까?
- 10. GetCallbackEventReference가 동 기적으로 작동하지 않습니다.
- 11. 자바 "작업"을 동 기적으로 처리하는 방법은 무엇입니까?
- 12. 비동기 함수가 동 기적으로 종료되면 OVERLAPPED.hEvent가 설정됩니까?
- 13. 비동기 Firebase 쿼리를 동 기적으로 실행하도록 하시겠습니까?
- 14. 비동기 인터페이스를 동 기적으로 구현 하시겠습니까?
- 15. NSNotificationCenter 이벤트가 동 기적 또는 비동기 적으로 수신 되었습니까?
- 16. CancelIoEx가 동 기적으로 취소되었는지 확인
- 17. NodeJS에서 문자열의 분할 방식을 동 기적으로 실행하는 이유는 무엇입니까?
- 18. Sequelizejs 모델 만들기 콜백이 동 기적으로 실행되고 있지 않습니까?
- 19. LocalMessageSender를 동 기적으로 사용하기
- 20. 동 기적으로 requirejs 사용
- 21. 현재 geolocation을 동 기적으로 검색하는 방법은 무엇입니까?
- 22. 코어 데이터를 동 기적으로 사용하는 방법은 무엇입니까?
- 23. 노드 exec를 동 기적으로 사용하는 방법은 무엇입니까?
- 24. Gearman 작업을 동 기적으로 실행하는 방법은 무엇입니까?
- 25. indexedDB 테이블을 동 기적으로 루프하는 방법은 무엇입니까?
- 26. lucene 색인을 동 기적으로 업데이트하는 방법은 무엇입니까?
- 27. 스레드를 파이썬과 동 기적으로 실행하는 방법은 무엇입니까?
- 28. 은 노드 j에서 프로세스를 동 기적으로 실행합니다.
- 29. redis 메서드를 동 기적으로 호출
- 30. 승객을 동 기적으로 다시 시작 하시겠습니까?
안녕하십니까. 안녕하세요. – DrakaSAN
감사합니다 DrakaSAN :) – avinashkrsharma
context of node.js – avinashkrsharma