Nativescript背景http如何在完成事件返回后响应

时间:2018-05-14 10:56:09

标签: nativescript angular2-nativescript

我正在使用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?

2 个答案:

答案 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);
      });
   });
}