2012-01-30 6 views
4

페이지로드시 많은 수의 ajax 요청에서 채워지는 "보충"데이터의 큰 테이블이 있습니다. 이러한 요청은 완료하는 데 1 분 이상 소요될 수 있습니다. 이 데이터가로드되는 동안 사용자는 추가 Ajax 요청을 호출하는 페이지에서 작업을 수행 할 수 있습니다. 내가 만나는 문제는 큐에있는 다른 모든 Ajax 요청이 처리 될 때까지 추가 ajax 요청을 호출하는 사용자 작업이 완료되지 않는다는 것입니다. 이는 동일한 도메인 브라우저 연결과 jQuery ajax 대기열이 모두 사용되기 때문입니다.jQuery AJAX 대기열 우선 순위

불행히도 하위 도메인을 변경하는 것은 옵션이 아니며 동일한 도메인 연결을 모두 사용하지 않기 위해 동기 대기열을 설정하는 것도 아닙니다.

내가 원하는 것은 먼저 사용자 요청을 배치하여 요청에 "우선 순위를 매기는"옵션입니다.

jQuery의 ajax 큐를 사용하여이를 수행하는 간단한 방법이 있습니까?

편집 :

$ 아약스 기능 콜백 대기중인 요청을 "연기"를 사용할 수 beforeSend 수 있습니다 (이 나타나기 시작으로) 요청 큐를 관리 할 수있는 방법이 없다면?

+1

나는 브라우저의 제한 사항을 다루고 있으며 jquery와는 아무 관련이 없다고 생각한다. jquery가 요청을 시작했다. 다른 아약스 요청을 처리하여 훨씬 적은 수로 수행해야하는 요청 수를 줄일 수 있습니까? –

+0

결국 모든 Ajax 요청에 대한 참조를 유지 관리하는 전역 객체를 만들었습니다. 그런 다음 Ajax 요청을 다시 작성하여 취소하고 다시 시작하려는 경우 좀 더 용서할 수 있도록 요청합니다. 이것은 트랜잭션이 100 % 완료된 경우 요소 자체에 대한 추적을 의미합니다. 마지막으로, 사용자가 시작한 작업에서 나는 현재 및 대기중인 모든 Ajax 요청에 대한 중지를 호출하고 사용자가 시작한 작업을 실행합니다. 그런 다음 다른 모든 아약스 요청을 다시 시작합니다. 이전 요청의 완료 상태를 추적 했으므로 이미 완료된 요청을 건너 뛸 수 있습니다. –

답변

2

요청이 전달되면 서버에서 처리합니다. 비동기식이므로 응답을받을시기와 순서를 제어 할 수 없습니다. 서버는 다른 요청이 동일한 세션에 대해 대기 중임을 알지도 못합니다 ... 아마도 이것을 바꿀 수는 있지만 웹 서버가 요청을 관리하는 방법에 대해서는 많은 작업이 필요합니다.

실제로 수행 할 수있는 유일한 작업은 모든 데이터가로드 될 때까지 사용자가 상호 작용하지 못하게하는 것입니다.

+0

이것은 많은 의미가 있습니다. jQuery가 브라우저가 아닌 요청을 처리했다고 생각했습니다. –

+0

jQuery는 브라우저에 내장 된 AJAX 핸들러의 래퍼 일뿐입니다. –