2013-08-08 2 views
-2

데이터베이스에있는 일부 정보를 업데이트하는 기능에 문제가 있습니다 (Websql을 사용하고 있습니다). 내 응용 프로그램에서 업데이트를 수행하기위한로드 상자를 표시하고 있지만 get 함수가 완료되고로드 상자가 닫히기 전에 for가 끝납니다.+ for get function

다음 작업은 get이 끝날 때만 발생합니다.

누군가가 해결책이 있습니까? :(

나는 appframework 인텔을 사용하고 있습니다 (jqmobi)

for (var i=0; i<len; i++){ 
    var url = "http://172.25.129.30:8180/prax/rest/ocorrenciaJSONBean/consultarStatusOcorrencia/"+results.rows.item(i).id; 
    $.get(url,function(data){ 
     tx.executeSql('UPDATE ocorrencias SET status="'+data.responseText+'" WHERE id = '+results.rows.item(i).id); 
    }); 
}; 

I가 다음과 같은 시나리오 :

사용자가 셀을 열었다 호출 목록과 내부 은행 내가. 원하는 것은 은행의 상태를 업그레이드하는 것입니다.

오늘 저는 내부 은행과 각 ID에 대한 쿼리를 수행하여 웹 서비스 장소에서 통화 상태를 확인합니다. 다음 상호 작용 만 발생하고 싶습니다. GET이 완료되었을 때

여기서 문제는 기능이 끝나면 화면이 새로 고침되고 메시지가 '로드 중입니다'가 사라지는 것입니다. 모든 GET이 완료되기 전에 끝나기 때문에 예상보다 일찍 발생합니다.

+0

무엇을하려고합니까? 루프를 통해 수행하십시오? 그러나 당신은 이전이 끝날 때 단지 다음을 시작하기를 원합니 까? – putvande

+0

다음과 같은 경우 : 사용자가 셀에서 연 통화 목록이있는 내부 은행. 내가 원하는 것은 은행의 상태를 업그레이드하는 것입니다. 오늘은 내부 은행과 각 ID에 대한 쿼리를 수행하여 웹 서비스 장소에 가서 통화 상태를 확인합니다. 다음 상호 작용은 GET이 완료되었을 때만 발생합니다. 여기서 문제는 일단 기능이 끝나면 화면이 새로 고침되고 메시지가 "로드 중"으로 사라진다는 것입니다. 모든 GET이 완료되기 전에 끝나기 때문에 예상보다 일찍 발생합니다. – prma85

답변

0

get은 호출을 수행하기 위해 기다리지 않으므로 다음 함수를 수행하기 위해 get 함수에서 콜백을 수행해야합니다. 다음과 같이 할 수 있습니다 :

var index = -1; 
function perform_get(){ 
    index++; 
    var url = "http://172.25.129.30:8180/prax/rest/ocorrenciaJSONBean/consultarStatusOcorrencia/"+results.rows.item(index).id; 
    $.get(url,function(data){ 
     tx.executeSql('UPDATE ocorrencias SET status="'+data.responseText+'" WHERE id = '+results.rows.item(index).id); 
    }) 
    .done(perform_get); 
} 

이제 다음 호출을 수행하기 위해 대기 중입니다.

희망이 도움이됩니다.

+0

답장을 보내 주셔서 감사합니다. 그런 경우 변수 "index"를 전역 변수로 사용할 수 있으며 은행의 요소 수량 값으로로드하고 내 필요를 충족시키기 위해 감소시킬 수 있습니까? 가능합니까? – prma85

+0

이 함수는 루프 함수와 동일한 기능을 수행하지만 내 함수는 끝날 때까지 get을 기다립니다. 나는 단지'index'를'i'로 대체합니다. – putvande