2014-11-26 2 views
0

Android/iOS 앱을 빌드하는 데 cordova (phonegap)를 사용하고 있습니다. 앱이 데이터를 캐시해야합니다. 서버에서 JSON 파일을받은 다음 처리됩니다 (HTML로 표시되는 데이터).cordova (javascript) file.move 완료 될 때까지 기다려주십시오.

내 문제는이 코드에 있습니다

function moveExercisesJSON(){ 
    console.log("moving exercises json"); 
    var fail = function(err) { console.log(err) } 
    window.resolveLocalFileSystemURL(fileSave, function(file){ 
     window.resolveLocalFileSystemURL(store, function(store){ 
      file.moveTo(store, "exercises.json"); 
      console.log("done moving"); 
      displayExerciseList(); 
     },fail); 
    },fail); 
} 

JSON 파일 (exercises.json)는이 함수가 열릴하는 다운로드 폴더에 다운로드됩니다. 파일은 file.moveTo를 통해 이동합니다. 그런 다음 displayExerciseList()가 열립니다 (json 파일의 데이터를 처리/표시 함).

그러나 file.moveTo가 완료되기 전에 displayExerciseList()가 호출 된 것 같습니다. 그 때문에 나는 한 버전 (새로운 버전이 아직 다운로드 폴더에서 이동되지 않았기 때문에) 처음 .moveTo가 displayExerciseList를 호출하기 전에 끝날 때까지

가 어떻게 기다릴 수 열었을 때 뒤에 항상이다() 타이머 아무튼 ' 나는 영화 파일 (크기가 아주 다른 것)에 대해서도 똑같이해야하기 때문에 해결책이 아닌 것 같다.

+0

당신이 (되는 코르도바 파일 플러그인을 기반으로) this page about HTML5 file API 확인할 수 있지만 코르도바 3.7 – Mirko

답변

2

이 시도 :

function moveExercisesJSON(){ 
    console.log("moving exercises json"); 
    var fail = function(err) { console.log(err) } 
    window.resolveLocalFileSystemURL(fileSave, function(file){ 
     window.resolveLocalFileSystemURL(store, function(store){ 
      file.moveTo(store, "exercises.json",function(){ 
       console.log("done moving"); 
       displayExerciseList(); 
      },function(){ 
       console.log("error moving"); 
      }); 
     },fail); 
    },fail); 
} 

의 moveTo 함수는 성공 및 오류 콜백에 대한 선택적 매개 변수가 있습니다.

보다 자세한 내용은 매우 유사한 코드를 사용하고

+0

를 사용하여 iOS에서 작동하지 않는 것으로이 시도 되세요 iOS에서 Cordova 3.7을 사용하고 있습니까? 파일은 이동되지 않지만 – Mirko

+0

에 관계없이 성공 콜백이 호출됩니다. 코드를 게시 할 수 있습니까? –

관련 문제