2014-04-29 4 views
1

What is a callback function?에는 콜백 메소드에 대한 자세한 설명이 있습니다. 그것에 따르면 함수 A가 함수 B의 인수로 콜백으로 제공된다고 가정하면 B가 어떤 이벤트에 의해 트리거 될 때 A를 호출하고 을 호출하고 A는 결과를 B에 반환합니다. 이제 XML 문서를 구문 분석하는 SAX 파서가 있습니다. 그것에는 새로운 노드를 설정하는 것과 같은 작업을 수행 할 수있는 startElement(), endElement()과 같은 몇 가지 콜백 메서드가 있습니다. 제 질문은 콜백이라고 불리는 이유는 무엇입니까? 그들은 결과를 호출자, 즉 파서 객체로 반환하지 않았습니다.SAX 파서의 startElement()가 콜백 함수입니까?

답변

1

콜백이되는 본질은 더 많은 값인보다 의 전송이 반환됩니다.

XML 요소를 만나는 등의 이벤트를 구문 분석하기 위해 콜백 (일명 핸들러)을 등록 할 수 있습니다. XML 문서를 파싱하기 시작한 SAX 파서는 요소를 만날 때 콜백/핸들러를 호출합니다. 으로 전화하여 발생한 요소에 대한 정보를 제공합니다.

What is Inversion of Control?

+0

* back *을 (를) 호출하면 무엇을 의미합니까? 내 이해에서 파서를 다시 호출해야하는 핸들러는 ... * – justgivememyicecream

+0

시퀀스는 다음과 같습니다. (1) 코드가 콜백 메소드를 SAX 파서로 등록합니다. (2) 코드가 SAX 파서에 구문 분석을 시작하도록 지시합니다. (3) SAX 파서 ***는 XML 요소를 만났을 때 등록 된 콜백 메소드에 ***을 다시 호출합니다. (4) 콜백 메소드가 사용자의 필요에 따라 새 XML 요소를 처리합니다. – kjhughes

+0

핸들러가 단계 (4)를 완료 한 후에 컨트롤이 파서로 돌아 가야한다는 것이 맞지만이 전송은 호출이 아니라 리턴입니다. 파서 ***는 (3)에서 주어진 핸들러를 콜백하고 핸들러는 새로운 호출이 아닌 일반적인 스택 기반 리턴 메커니즘을 통해 (4) 후에 끝날 때 파서에 제어를 리턴합니다. – kjhughes

4

일반적으로 클라이언트라고 할 무언가를 원하는 소프트웨어의 조각, 그리고 서비스가 서버라고합니다 제공하는 소프트웨어를 참조하십시오. 일반적인 상호 작용 모드는 클라이언트가 서버에서 호출하는 것입니다. 보다 강력한 상호 작용 형태는 클라이언트가 특정 일이 발생할 때 서버가 호출 할 수있는 코드 (함수, 메소드)를 제공하는 것입니다. 이를 콜백이라고합니다.

이 경우 응용 프로그램은 클라이언트이고 XML 파서가 서비스를 제공하고 있습니다. 어플리케이션은 파서에 ContentHandler를 제공하여, 파싱 이벤트가 발생할 때 호출된다. ContentHandler는 구문 분석 서비스에서 호출 할 클라이언트 응용 프로그램의 일부인 코드이기 때문에 콜백 세트입니다.

+0

클라이언트 - 서버 앵글로부터의 이해가 더 쉽습니다 :) – justgivememyicecream