2016-12-29 53 views
0

我有两个观察到的在我的服务这样的等待回调结束观察的

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

问题是我无法在订阅运行之前运行此回调函数。它总是在运行之后运行任何人都可以解释我应该如何在订阅之前运行回调的方式。

感谢先进。

+0

不知道如果我理解你的问题.. ..但作为某种声明的可观察性来思考:您只需声明在需要时如何管理数据。然后每次你在这个流上调用'.subscribe()',所有的东西都会被执行,你就会得到你的结果。什么是'this.getBucket()'? – olivarra1

回答

1

最后我是能够解决this.I也可以使用承诺,而不是观察到这样的

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

和编辑叉加入这样

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