2009-11-06 3 views
0

생성 된 JavaScript 프록시를 통해 호출되는 간단한 ASP.Net WCF Ajax 지원 웹 서비스가 있습니다. 이 서비스는 레코드 수가 정수가되도록 데이터베이스 저장 프로 시저 호출을 수행합니다. 클라이언트 (Windows 7에서 IE8)에서 호출이 호출되고 DB 호출이 오래 걸리면 다른 JavaScript 함수를 호출 할 수 없습니다. 예를 들어, 드롭 다운 중 하나에 웹 서비스 호출이 완료 될 때까지 실행되지 않는 onchange 이벤트가 있습니다.WCF Ajax 통화가 통화를 차단합니까?

WCF 서비스를 잘못 구성하여 부주의로 동기식 호출을 했습니까? 또는 WCF Ajax 호출이 ansync가 잘못되었다는 내 가정입니까?

샘플 코드

var count = MyNameSpace.MyService.GetCount(param1, onComplete); 

function onComplete(result){ 
    $get('countLabel').text = result; 
} 

MyNameSpace.MyService is the automagically generated proxy 
+1

정확히 AJAX 통화를하고 계십니까? 코드 예제? – jrista

+0

MyNameSpace.MyService.GetCount (param1, onComplete); onComplete는 콜백 함수입니다. MyNameSpace.MyService는 자동 생성 된 프록시입니다. – rams

+0

@rams : 코드 샘플을 원래 질문에 추가하고 코드로 형식을 지정하십시오.이 주석에서 불필요하게 읽기가 어렵습니다 ..... –

답변

2

대답은 '아니, 그렇지 않을 것입니다. 호출은 비동기 적으로 진행되어야하며 콜백을 통해 완료 또는 실패 알림을 받아야합니다. 이렇게하면 문제가 심각하게 잘못 될 수 있습니다.

단일 도메인과 통신 할 때 이전 브라우저의 연결 제한은 2 회로 제한되므로 여러 동시 호출을 할 경우 이전 두 통화 중 하나가 완료 될 때까지 세 번째 + 통화가 발행되지 않습니다. 이러한 연결은 브라우저가 이미지 및 스타일 시트와 같이 검색 할 수있는 다른 리소스와 공유됩니다. IE8 +, Chrome 및 Mozilla에서 연결 수는 8로 늘었습니다.

+0

Drew, 확인해 주셔서 감사합니다. 혐의와 그럴듯한 설명. – rams

관련 문제