2017-08-16 104 views
1

我一直在尝试更新一个老版本的相机预览插件,它仍然有setOnPictureTakenHandler方法允许我返回图片的url。CameraPreview takePicture()什么也没有返回

该插件的较新版本使用takePicture()方法,我可以在其中定义一个函数,该函数将被调用onSuccess,并且我定义该函数以返回拍摄图像的URL。但我无法获得onSuccess功能之外的URL!

我刚刚转移到打字稿,所以我想这是某种管理变数的错误。我正在使用cameraPreview的提供程序,并且已为该插件的takePicture()方法创建了一个信封。该信封应该将URL返回给我已经注入提供者的控制器。

这里是供应商的信封代码:

url:string; 
takePictures2() :string {  
    this.cameraPreview.takePicture(function(imgData){ 
     this.url = "data:image/jpeg;base64" + imgData; 
    }).then();  
    return this.url; 
}; 

这里是控制器代码:

takePictures() { 
    let url : string = this.cameraPreview.takePictures2(); 
    console.log(url); 
} 

回答

0

我没有测试过下面的代码,但我想:

1) PromisifytakePicture2。它包装插件的takePicture方法和解决完成后的网址:

takePictures2(): Promise<string> { 
    return new Promise((resolve, reject) => { 
     this.cameraPreview.takePicture(function(imgData) { 
      resolve("data:image/jpeg;base64" + imgData); 
     }); 
    }; 
}; 

2)使takePictures等待takePictures2解决:

takePictures() { 
    let url : string; 
    this.cameraPreview.takePictures2().then(url => { 
     this.url = url; 
     console.log(url); 
    ); 
}; 
+1

非常感谢你,它工作得很好了我需要! – pol52