2012-10-09 2 views
0

으로 설정되기 전에 Ext.Ajax.request가 응답 할 때까지 기다리십시오. extjs 4 애플리케이션에 대해 현재 로그인 한 사용자를 설정하는 코드가 아래에 표시됩니다. 주석을 제거한 코드는 코드가 계속되기 전에 경고가 수락 될 때까지 기다리는 것처럼 보입니다 (보이는 것처럼 보입니다). 따라서 비동기 호출이 성공할 때까지 충분한 시간을 가질 수 있습니다. 경고 메시지를 주석으로 처리하면 AJAX 호출이 다시 발생하지 않기 때문에 "employeeFilter"변수가 설정되지 않습니다. 어떤 경우에는 "employeeFilter"를 null로 설정합니다. 어떻게 AJAX 응답이 성공할 때까지 기다릴 수 있도록이 문제를 해결할 수 있습니까?변수가

var loggedInUserId = null; 
Ext.Ajax.request({ 
    url: '/Controls/UserList/UserService.asmx/GetLoggedInUserId', 
    method: 'POST', 
    jsonData: { 'x': 'x' }, 
    success: function (response, opt) { 
     loggedInUserId = Ext.decode(response.responseText).d; 
    }, 
    failure: function (response) { 
    } 
}); 

//alert(loggedInUserId); 
var employeeFilter = loggedInUserId; 
var projectFilter = '-1'; 
+0

콜백 함수에 'employeeFilter' 값을 지정해야하는 것처럼 들립니다. – ultranaut

+1

AJAX의 "A"는 "비동기"입니다. –

답변

2

나는 이것을했을 것이다.

var employeeFilter;   
Ext.Ajax.request({ 
    url: '/Controls/UserList/UserService.asmx/GetLoggedInUserId', 
    method: 'POST', 
    jsonData: { 'x': 'x' }, 
    success: function (response, opt) { 
     employeeFilter = Ext.decode(response.responseText).d; 
     //Do here whatever you need to do once the employeeFilter is set. probably call a function and pass the employee filter as parameter. 
    }, 
    failure: function (response) { 
    } 
}); 

var projectFilter = '-1'; 
+0

약 50 줄의 코드가 있습니다 (두 번 이상 사용되었습니다). 따라서 모든 것을 수행하지는 않겠습니다. – MacGyver

+6

함수에 50 줄의 코드를 래핑하고 호출합니다. 아약스 성공 호출에서 employeefilter를 설정 한 직후의 함수. – Tariqulazam