我正在使用nativescript-background-http
上传图片。组件中的代码调用服务将图像发布到API:
camera.takePicture(options)
.then(function (imageAsset: ImageAsset) {
imageUploadService.uploadImage(imageAsset.android);
我希望能够订阅此上传方法,目前看起来像这样:
uploadImage(fileUri) {
...
var task = this.session1.multipartUpload(params, request);
task.on("progress", logEvent);
task.on("error", logEvent);
task.on("complete", complete);
}
有没有办法让函数在函数完成后返回一个observable?
答案 0 :(得分:0)
我设法找到了解决方案。在这样的组件中:
let imageUpload = imageUploadService.uploadImage(imageAsset.android);
imageUpload.on("complete", a => {
console.log('upload complete')
});
虽然服务返回任务:
uploadImage(fileUri) : Task {
...
return this.session1.multipartUpload(params, request);
}
答案 1 :(得分:0)
如果您只需要在上传完成时通知,那么您可以返回承诺并使用它。
camera.takePicture(options)
.then(function (imageAsset: ImageAsset) {
imageUploadService.uploadImage(imageAsset.android).then((data)=>{
console.log("completed data",data)
});
}
uploadImage(fileUri) {
return new Promise((resolve,reject)=>{
...
var task = this.session1.multipartUpload(params, request);
task.on("progress", logEvent);
task.on("error", logEvent);
task.on("complete", (data)=>{
console.log("complete");
resolve(data);
});
});
}