【发布时间】:2017-10-13 12:11:09
【问题描述】:
我仍然对 rxjs 的工作原理感到困惑。
我正在构建一个 Ionic 应用程序,该应用程序向我的服务器发出请求并需要 json。我已经成功地订阅了 http.post 并获得了我需要的数据。
但是现在我的问题是我需要在从 Storage 获得的 http 请求中传递一个身份验证令牌。这是一个问题,因为在调用 http.post 请求之前,我需要等到存储准备好并从中获取我的令牌值。
这是我试图获取我的 json 数据的地方
getPlanograms() {
//API URL
let requestURL = 'https://myapiurlhere';
let headers = new Headers({'Content-Type': 'application/json'});
return this.storage.ready().then(() => {
return this.storage.get('id_token').then((val) => {
headers.append('Authorization', 'Bearer ' + this.authCredentials.token);
let options = new RequestOptions({headers: headers});
return this.http.post(requestURL, {}, options)
.map(response => <Planogram[]>response.json());
})
});
}
从这里调用
ionViewDidLoad (){
this.merchandisingDataService.getPlanograms()
.subscribe(Planogram => this.planograms = Planogram);
}
但是,当我尝试这样做时,我收到以下错误
“Promise”类型上不存在“订阅”属性。
实现我的目标的最佳方式是什么?
【问题讨论】:
-
getPlanograms()返回一个Promise。你不能subscribe承诺。你可以thenpromises 和subscribe到 observables。 -
感谢您的评论。什么是从 http.post 请求中继续返回 observable 的最佳方法,同时仅在从 Storage 中检索到我的令牌变量后仍然执行它?
标签: javascript angular rxjs ionic3