2011-11-21 2 views
0

내 JS에서 URL을 단락시키기 위해 bit.ly API에 get 요청을 보내고 있습니다. 문제는 코드에서 사용하기 위해 반환 된 URL이 필요하다는 것입니다.XMLHttpRequest 동기 또는 비동기

동기 요청을 사용하는 것이 가장 좋습니까? 응답은 아직 짧은 URL을 반환하지 않았으므로 bit.ly를 사용하는 XHR 요청 이후 모든 코드가 실패합니다.

bitlyXHR.onreadystatechange = function() { 
    if (bitlyXHR.readyState == 4) { 
     if (bitlyXHR.status == 200) { 
      var obj = JSON.parse(bitlyXHR.responseText); 
      // Do something 
     } 
    } 
}; 

bitlyXHR.open("GET", "http://api.bitly.com/v3/shorten?login=&apiKey=&longUrl=" + longURL + "&format=json"); 
bitlyXHR.send(); 

// Some code here that uses the short URL 
+0

그냥 "Do something"코드 대신 "Short URL을 사용하는 일부 코드"를 입력하십시오. –

+0

동기화 ajax는 악마입니다. 그것을 사용하지 마십시오. – Raynos

+0

동기식 AJAX (XMLHTTPRequest)를 사용하는 것은 가능하지만 많은 이유로 이상적이지는 않지만 교장이 자바 스크립트는 처리 시간이 제한되어 있습니다. 따라서 프로세스가 돌아 오는 데 더 많은 시간이 소요되면 Javascript는 스크립트가 너무 많은 시간 (Iexplorer를 제외한 거의 모든 브라우저에서)을 소요한다는 메시지와 함께 중단됩니다. – magallanes

답변

2

당신은 같은 것을 수행 할 수 있습니다 더 나은하는 전화

function doSomething(obj) { 
    // this does something with the result. 
} 

bitlyXHR.onreadystatechange = function() { 
    if (bitlyXHR.readyState == 4) { 
     if (bitlyXHR.status == 200) { 
      var obj = JSON.parse(bitlyXHR.responseText); 
      doSomething(obj); 
     } 
    } 
}; 

bitlyXHR.open("GET", "http://api.bitly.com/v3/shorten?login=&apiKey=&longUrl=" + longURL + "&format=json"); 
bitlyXHR.send(); 
0

이동합니다 뭔가를 의견 또는, 수행이 코드의 섹션에 짧은 URL을 사용하는 코드를 거기에서 그 코드를 포함하는 함수.

이렇게하는 것은 이며 콜백을 사용합니다. 요청이 반환 될 때 나중에 실행될 함수를 제공합니다. 호출 완료를 기다리는 동안 브라우저를 잠그지 않으므로 AJAX (A는 비동기식입니다.) 요청을 처리하는 가장 좋은 방법입니다.

관련 문제