0

navigator.camera.getPicture API によって呼び出される次のコードを使用しています。

function getImageURI(imageURI) {
    //resolve file system for image to move.
    window.resolveLocalFileSystemURI(imageURI, gotPicture, function(error) {onfail(error,'Get Target Image');}); 

function gotPicture(targetImg) {    
    //move the image into the post_(n) directory.
    targetImg.moveTo(Globals.POSTDIR_OBJ,Utils.getImageName(), moveSuccess2, function(error){alert('Move Error')} ); 

        function moveSuccess2(){
            alert('addPicture moveSuccess');

            //update the picture counts in the client and DB.
            Globals.pictCount++;
            updateFilesById();
            setTimeout("Gallery.show()",500);  
        };
    }; //gotPicture 



}; //getImageURI  

問題は、成功コールバック関数も失敗コールバック関数も呼び出されない時間の約 30% です。

移動は実際には毎回成功しますが、成功関数は約 1/3 の時間で実行に失敗します。

4

1 に答える 1

0

これについては、勝手に推測してみます。私の推測では、成功コールバックの非同期性のために、スレッド化の予測不可能性のために成功関数がまだ定義されていないことがあります。moveSuccess2 関数の宣言を、moveTo 関数を呼び出す前に常に宣言が終了する場所に移動してみてください。これは、gotPicture 関数の外部で関数として宣言するか、エラー ハンドラーのような無名関数として宣言するか、moveTo を呼び出す直前に宣言することを意味します。

于 2012-12-22T03:30:01.250 に答える