2012-07-03 5 views
0

저는 자바를 기본 배경으로하는 새로운 프로그래머입니다. 나는 자바에서와 마찬가지로 자바 스크립트로 프로그램에 오류 처리를 작성하려고 시도하고있다. 자바에서는 아파치 HTTP 클라이언트를 사용하여 클라이언트를 생성하고 Httpget 요청을 호출한다.JavaScript에 Apache HTTP 클라이언트와 동등한 기능이 있습니까?

HttpClient cli = new DefaultHttpClient(); 
cli.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000); 
HttpResponse resp = null; 
for (int i = 0 ; i < 5 ; i++) { 
try { 
resp = cli.execute(new HttpGet("http://example.org/products")); 
} 
catch{//code} 
} 

자바 스크립트 환경에서이 동작을 에뮬레이션하는 방법을 잘 모르겠습니다. 누구든지이 분야에 대한 통찰력이나 지식을 가지고 있습니까?

+2

그 패턴은 조금 비참합니다. 내결함성은 어떤 일이 일어나더라도 같은 요청을 5 번 시도/시도하는 것입니다. – zetlen

+0

당신은 자바 스크립트에서 HTTP GET 요청을 원했습니까? –

+0

zetlen하려면 "재시도"라는 쉬운 예제 코드 중 하나입니다. 네트워크 문제가있는 경우 네트워크를 다시 연결했는지 확인하기 위해 여러 번 다시 시도하십시오. user104의 최종 목표는 HTTPget을 에뮬레이트하는 것이지만 클라이언트 인스턴스 없이는 할 수 없다고 생각합니다. 나는 틀린가? – Bggreen

답변

0

다음은 코드 스 니펫과 정확히 같지만 JavaScript입니다.

var cli; 
var callback = function(resp) { 
    // due to the asynchronous nature of XMLHttpRequest, you'll need to put all logic that uses the response in a callback function. 
    // code below using responseText 
    console.log(resp); 
}; 
var timeout = 5000; 
var handler = function() { 
    var errorSeries; 
    if (this.readyState === 4) { // indicates complete 
     errorSeries = parseInt(this.status.toString().charAt(0)); // will be "2" or "3" for 200 or 300 series responses 
     if (errorSeries === 2 || errorSeries === 3) { 
      callback.call(this, this.responseText); 
     } else { 
      // handle http error here 
     } 
    } 
} 
for (var i = 0 ; i < 5 ; i++) { 
cli = new XMLHttpRequest(); // ActiveXObject('Microsoft.XMLHTTP') in IE8 and below 
cli.timeout = timeout; 
cli.onreadystatechange = handler; 
try { 
    cli.open('GET','http://example.org/products'); 
    cli.send(); 
} 
catch(e) { 
} 

위의 내용이 영어로 표시되는 경우 그 때문입니다. 다른 주석가들도 바로 당신을 조종했습니다 : jQuery와 같은 라이브러리를 사용하여 이런 종류의 상용구를 추상화 해보십시오.

1

다른 언어와 마찬가지로 javascript에서 "예외"처리는 대부분 오류 검사로 대체됩니다. 요청을 발행 할 때 예를 들어, 당신은 당신의 XMLHttpRequest 객체의 상태를 확인할 수 있습니다 :

httpRequest.onreadystatechange = function() { 
    if (httpRequest.readyState === 4) { 
     if (httpRequest.status === 200) { 
       // ok, no "exception" 
      } else { 
       // BOOM ! "exception" 
      } 
     } 
    } 
} 

예외가에서는 parseInt와 같은 몇 가지 장소에서만 유용하다.

하지만 난 모르겠어요 그 코드는 많은 의미합니다 자바 스크립트 무거운 "내결함성"코드가

  • 모든 실행됩니다 어떻게 당신이 정말로 모르는

    • 을 중요한 체크와 모든 중요한 지속은 클라이언트 쪽입니다

    귀하의 글로벌 시스템은 브라우저가 외국 도메인이라는 생각이 있어야합니다. 서버에 들어가는 것은 아무것도 신뢰할 수 없습니다.

  • +0

    빠른 응답을 보내 주셔서 감사합니다! 나는 디자인에 대한 걱정을 이해하지만, 내 최종 제품은 건전하다고 믿는다. 내 문제는 요청을 다루고 있습니다. 당신이 언급 한 xmlhttprequest를 살펴 보았습니다. 나는 그것이 해결책이라고 믿습니다. 이 객체에 "javadoc"이 있습니까? 대부분의 페이지에서 나는 그들이 사용하고있는 변수와 내장 된 함수의 차이점을 알 수 없다. 자바에 대한 모든 훌륭한 문서에서 나는 버릇이 있다고 생각합니다. – Bggreen

    +0

    javadoc만큼 간단하고 동질적인 것은 아무것도 없지만 google과 [MDN] (https://developer.mozilla.org/fr/)을 사용해보십시오.대부분의 경우, 좋은 자바 스크립트는 일반적인 자바 프로그램보다 훨씬 덜 장황하다. [here] (http://ejohn.org/apps/learn/)와 같이 기초 (클로저, 범위 등)를 이해하면 자바 스크립트를 이해하기 쉽다는 것을 알 수 있습니다. –

    +0

    [this] (https://developer.mozilla.org/fr/XMLHttpRequest)를 찾고있을 수 있습니다. –

    관련 문제