2017-04-01 124 views
1

我需要从我的存储中取两件东西,这给我两个Promises。接下来,我需要使用这两个承诺来组成一个角度为2的HTTP请求。但我无法找出正确组合这些步骤的方法。我总是以Observable<Observable<Response>>结束。解决多个承诺并发送角度2 http请求

let tokenPromise = this.getToken() 
    let registrationTokenPromise = this.getRegistrationToken() 

    Observable.zip(
     tokenPromise, 
     registrationTokenPromise, 
     (token, registrationToken) => { 
      let headers = this.headers(token) 
      return this.http.post(`${this.apiBase}/users/registration-token`, 
       { registration_token: registrationToken }, 
       headers 
      ) 
     }) 

我该如何正确解决这个问题以获得Observable<Response>

回答

1

由于Observable.zip返回Observablehttp.post返回Observable,因此您收到Observable<Observable<Response>>。为了解开了可观的一个,你需要subscribeObservable.zip

Observable.zip(
     tokenPromise, 
     registrationTokenPromise, 
     (token, registrationToken) => { 
      let headers = this.headers(token) 
      return this.http.post(`${this.apiBase}/users/registration-token`, 
       { registration_token: registrationToken }, 
       headers 
      ) 
     }) 
     .subscribe(response => { 
      //do something with response 
     }) 
+0

是的,我已经链接两个'subscribe'叫我的请求,火灾一起,现在。谢谢。 – tolgap