ajax 동기 화 및 비동기 XML HTTP 코드 분석

웹 스 크 립 트 프로 그래 밍 에서 절대 다수의 경우 비동기 모드 를 사용 해 야 한다.동기 화 모드 는 현재 스 크 립 트 엔진 을 걸 것 입 니 다.따라서 동기 화 모드 를 사용 할 때 원 하 는 것 이 무엇 인지 알 아야 합 니 다.C++개발 에서 동기 화 모드 는 주류 가 되 어야 합 니 다.비동기 모드 를 사용 해 야 한다 면 Using IXMLHTTPRequest onreadystatechange from C++를 참고 하 십시오.다음은 원 격 호스트 의 RSS 파일 코드 를 비동기 모드 로 가 져 오 는 것 입 니 다.중요 한 것 은 IXMLHTTPRequest:onreadystatechange 에 리 셋 함 수 를 설정 하 는 것 입 니 다.스 크 립 트 가 콘 솔 로 조퇴 하 는 것 을 방지 하기 위해 asyncDone 변 수 를 사용 하여 현재 상 태 를 감지 합 니 다.물론 웹 페이지 에서 XML HTTP 를 사용 하면 이렇게 번 거 롭 지 않 아 도 됩 니 다.IE 웹 페이지 가 닫 히 지 않 으 면 리 셋 함수 가 종료 되 지 않 습 니 다
 
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.6.0");
var url = "https://www.jb51.net/rss.xml";

var asyncDone = false;

try {
xmlhttp.open("GET", url, true);
xmlhttp.onreadystatechange = onReadyStateChange;
xmlhttp.send(null);

// loop so that the program from quiting
while (!asyncDone) {
WScript.Sleep(100);
}

WScript.Echo(xmlhttp.responseText);
} catch (e) {
WScript.Echo(e);
}

function onReadyStateChange() {
WScript.Echo("readyState: " + xmlhttp.readyState);
if (xmlhttp.readyState == 4) {
asyncDone = true;
}
}
동기 화 모드 에서 원 격 호스트 자원 을 가 져 오 는 코드 는 매우 간단 합 니 다
 
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.6.0");
var url = "https://www.jb51.net/rss.xml";

try {
xmlhttp.open("GET", url, false);
xmlhttp.send(null);
WScript.Echo(xmlhttp.responseText);
} catch (e) {
WScript.Echo(e);
}
그러나 IE 에서 동기 화 모드 를 사용 하면 리 셋 메커니즘 이 없고 IE 가 스 크 립 트 의 스 레 드 를 지원 하지 않 기 때문에 스 크 립 트 는 XML HTTP 가 돌아 올 때 까지 걸 립 니 다.IE 인터페이스 자체 가 걸 립 니 다.동기 화 인지 비동기 인지 구체 적 인 문 제 는 구체 적 으로 분석 해 야 한다.

좋은 웹페이지 즐겨찾기