동기화 일부 서비스에 대한 ajax 호출이 있습니다.AJAX 호출 블록 대화 상자가 표시됩니다.
내가 먼저 대화 표시하고 싶습니다 (내 경우에는 그것이 에 extjs 창입니다 ...하지만 그게 포인트 옆에있다. 같은 문제는 간단한 경고 (..)로 발생).
대화 상자를 표시 한 직후에 완료하는 데 약 30 초가 걸리는 아약스 전화를 부르고 싶습니다. 그러나 대화 상자는 ajax 호출이 완료 될 때까지 (즉, 30 초 내에) 표시됩니다. 나는 심지어 그것을 타임 아웃에 넣으려고했지만, 아무 것도 바뀌지 않는다.
Util.logInfo('1. before popup')
setTimeout(function(){alert("Hello")},1000); //some kind of GUI action
Util.logInfo('2. after popup')
var self = this;
var call = {}
call.url = url;
call.xmlHttpReq = $.ajax({
url: 'somewebserviceURLthattakesaloooongtime',
dataType: 'json',
async: false,
type: 'GET'
}).always(function (processedDataOrXHRWrapper, textStatus, xhrWrapperOrErrorThrown) {
self.data = processedDataOrXHRWrapper;
});
Util.logInfo('3. after ajax')
이 JQuery와 AJAX 기능에 특별한 문제인가, 아니면 내가 어떻게 아약스 작품에 대한 근본적인 뭔가 를 놓친 거지?
Java 백그라운드에서 오는 것은 마치 이벤트 발송 스레드 활동이 진행중인 것과 같습니다. 당신의 아약스가
를 완료 할 때까지 실행 더 스크립트를 방지 (또는 전체 웹 사이트를 잠글)합니다async: false
설정
예, 고정되었지만 비동기가 아닌 동기화를 실행하고 싶습니다. 통화 후 다른 팝업을 표시하면 즉시 표시됩니다. 두 대화 상자 사이에 일시 중지가 필요합니다. –