【问题标题】:Nativescript background http how to response once complete event returnsNativescript后台http一旦完成事件返回如何响应
【发布时间】:2018-05-14 10:56:08
【问题描述】:

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

【问题讨论】:

    标签: nativescript angular2-nativescript


    【解决方案1】:

    我已经设法找到了解决方案。在这样的组件中:

    let imageUpload = imageUploadService.uploadImage(imageAsset.android);
    imageUpload.on("complete", a => {
        console.log('upload complete')
    });
    

    虽然服务返回一个任务:

    uploadImage(fileUri) : Task {
        ...
        return this.session1.multipartUpload(params, request);
    }
    

    【讨论】:

      【解决方案2】:

      如果你只需要在上传完成时通知,那么你可以返回promise并使用它。

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

      【讨论】:

        猜你喜欢
        • 2021-09-30
        • 2017-10-15
        • 1970-01-01
        • 2017-01-03
        • 2020-04-16
        • 1970-01-01
        • 2013-10-12
        • 1970-01-01
        • 2020-02-14
        相关资源
        最近更新 更多