2011-08-27 3 views

답변

1

이 기본적으로

일어나고 왜, XMLHttpRequest의 사용 아약스 요청은 비동기. 즉, 메서드 호출은 즉시 반환되고 요청이 백그라운드에서 진행되는 동안 주 실행이 계속됩니다. 요청이 완료되면 콜백 메소드가 요청 결과와 함께 호출됩니다. 따라서 (비동기) 요청이 완료되기 전에 경고가 실행됩니다.

해결 방법 1 : 콜백 당신은 당신이 콜백을 사용하고 비동기 동작을 계속 사용하도록 코드를 다시 작성할 수있는 가능성이 있도록 동기 응답 텍스트 필요할 것 이유에 대한 컨텍스트를 제공하지 않은

-이 대개 좋은 습관입니다.

해결 방법 2 : 당신이 절대적으로 동 기적으로 요청을해야 함을 발견하면 강제 동기 요청

그러나, 당신은 당신이 아약스 요청이 동 기적으로 할 것을 요청할 수 있음을 확인할 수 있습니다. Greasemonkey를 사용하면 GM_xmlhttpRequest을 호출 할 때 documented here과 같은 옵션 synchronous: true을 사용해야합니다. 문서에 따르면

주의 : 요청이 완료 될 때까지 전체 Firefox UI가 잠기고 고정됩니다. 이 모드에서는 반환 값에서 더 많은 데이터를 사용할 수 있습니다.

브라우저에서 XHR 개체를 사용하면 passing false as the second parameter to XMLHTTPRequest#open과 같은 결과를 얻을 수 있습니다.

당신이 그리스 몽키의 이전 버전으로 작업하는 경우,이에 대한 답변은 SO 질문은 유용 할 수 있습니다 [: 호출 기능에 GM_xmlhttpRequest 반환 값 Greasemonkey와 (http://stackoverflow.com의 How to make synchronous AJAX calls in greasemonkey?

관련 문제