等待回调完成可观察

bews99

我在服务中有两个这样的观察点

return Observable.forkJoin(
   this.http.post(this.baseUrl, JSON.stringify(user), this.serverConfig.getJsonHeader()),
   this.awsService.uploadData(params)
)

我在组件中订阅了它们

.subscribe(
    data => {
       console.log('data[0]',data[0]);
       console.log('data[1]',data[1]);
    }
);

和我的uploadData职能,

uploadData(params: any): Observable<any> {
      return Observable.of(
          this.getBucket().upload(params,
               (error, resp) => {
                  console.log('error', error);
                  console.log('resp', resp);
               }
           )
       )
   }

问题是我无法在订阅运行之前运行该回调函数,它总是在订阅之后运行,所以任何人都可以解释在订阅之前我应该​​使用哪种方式运行回调。

提前致谢。

bews99

最终我能够解决这个问题。我本可以使用promise,而不是像这样的可观察的

uploadData(params: any) : Promise<any>{
        return new Promise((resolve, reject) => {
            this.getBucket().upload(params, (err, data) => {
                if (err)
                    reject(err);
                 else
                    resolve(data);
            });
        });
    }

并像这样编辑fork

Observable.fromPromise(this.awsService.uploadData(params))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章