Phonegap 2.2 moveTo()无法执行回调

时间:2012-12-21 23:49:36

标签: cordova

我正在使用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的时间。

1 个答案:

答案 0 :(得分:0)

只是想对这一个进行猜测。我的猜测是,由于成功回调的异步性质,由于线程的不可预测性,偶尔尚未定义成功函数。尝试将moveSuccess2函数的声明移动到某个地方,它的声明将始终在调用moveTo函数之前完成。这可能意味着将其声明为getPicture函数之外的函数,或者声明为错误处理程序之类的匿名函数,或者在调用moveTo之前声明它。