2016-12-29 51 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))