我来自同步编程背景,我很难理解observables。
以下是我的服务/提供商(Ionic 2项目)的摘录
return this.http.get(`${this.serverApi}`)
.map(res => <Response[]>res.json());
我将从LoginPage
订阅。我有几个问题。
即使我没有声明,上述代码是否会返回一个可观察/观察者?
响应是JSON。如何检查/处理JSON并执行某些操作,如果
res.auth_token==true
然后做
localStorage.setItem(res.auth_token)
我认为应该在提供者类中完成。只是一个典型的提示/示例将是很棒的。
请求在点击订阅方法时是否真的发生了?
Creating and returning Observable from Angular 2 Service提到了Subject和ReplaySubject。我应该使用它们吗?
答案 0 :(得分:3)
代码将返回Observable
您可以将回调正文更改为块并添加任意数量的代码
return this.http.get(`${this.serverApi}`)
.map(res => {
let x = <Response[]>res.json();
// do something with x
res.auth_token == true;
return res; // with a block body an explicit`return` is required
});
.subscribe()
将在响应到达时执行http.get()
,然后执行所有后续运算符。没有.subscribe()
就不会发生任何事情。 注意:某些Angular API需要Observable
,在这种情况下,您不得致电subscribe()
,因为subscribe()
会返回Subscription
,而不是Observable
。
http.get()
,则您已经获得了观察结果,并且不需要Subject
,ReplaySubject
或任何其他可能性。