2011-11-30 3 views
6

가끔 내 페이지에서 동시에 많은 아약스 호출을 수행합니다. 모든 요소는 데이터가 사용 가능 해지면 업데이트됩니다 (호출을 대기열에 넣고 싶지는 않습니다). 그러나 때로는 모든 ajax 호출이 완료 될 때까지 웹 페이지가 요소를 업데이트하지 않습니다.업데이트 전에 모든 AJAX 호출이 완료 될 때까지 페이지가 대기합니다.

예를 들어, 내가 업데이트하는 행에 4 개의 그림이 있습니다. 각 이미지에는 해당 데이터를 사용할 수있게되면 원본을 업데이트하는 자체 Ajax 콜백이 있습니다. 코드는 다음과 같이 보입니다 :

for (var i = 0; i < numPictures; i++){ 
    Dajaxice.Images.load_picture(callback_function, {'pictureId': i}); 
} 

가 callback_function는 UI 요소에 이미지를 박았을 한번의 준비 :

imgSnippet = '<img src="' + data.img_source + '"/>' 
$("#" + data.container_id).html(imgSnippet); 

(데이터가이 기능은 서버로부터받은 객체이다) 나는 AJAX 기능을 위해 dajax (django 용 플러그인)을 사용하고 있습니다 (예에서 볼 수 있듯이). 서버 측에서 mod_wsgi를 통해 django 1.3을 실행하는 아파치 (2.2)가 있습니다.

실행되면 일부 아약스 호출이 더 일찍 끝났음에도 불구하고 (서버에서 볼 수 있음) 마지막 호출이 돌아올 때까지 페이지가 요소를 업데이트하지 않습니다.

제안 사항?

덕분에,

+1

이것은 http://stackoverflow.com/questions/7504264/ajax-simultaneous-loading-of-multiple-images의 복제본으로 사람들이 귀하의 질문에 답변 한 것처럼 보입니다. 그렇지 않은가요? – dyoo

+1

ajax 호출은 동기식입니까? 그렇다면, 자바 스크립트 컨트롤을 다시 시스템에 반환 할 때까지 화면 업데이트를받지 못할 수도 있습니다. – jfriend00

+0

@dyoo : 좋은 장소지만 실제로는 그렇지 않습니다. 이 문제는 멀티 스레드 아파치 서버에서 발생합니다. – Goro

답변

1

나는 모든 이미지를 유지하고 새로운 기능을 만들 배열을 만드는 것이 좋습니다 그 표시를 할 이미지 전년 동기 대비 서버에서 다시 호출 foreach는 이미지 증가 q를 미리 정의 된 카운터에 그들 모두를 받았을 때 카운터는 이미지를 표시하는 사진 수와 카운터를 같게하고 카운터를 0으로 만들면 사진이 있어야하는 위치에 로딩을 넣을 수 있습니다. 죄송합니다. 코드를 작성했지만 모바일에 있습니다. 어쩌면 나는 내 대답이 분명하지 않으면 나중에 게시 할 것입니다

1

로 콜백 함수의 내용을 래핑하여 해결할 수 있습니다은 0 또는 1 밀리 초 시간 초과로 호출합니다. 이렇게하면 시스템이 화면을 업데이트합니다.

관련 문제