Angular 了解如何处理http调用的可观察返回

Angular 了解如何处理http调用的可观察返回,angular,rxjs,angular2-http,Angular,Rxjs,Angular2 Http,我刚开始使用Angular 2应用程序,它可以进行一些http调用,这给我带来了一些可观察性。我仍然很难学会如何处理它们,对于初学者来说,文档有点缺乏。我将举一个简短的例子来说明我遇到的困难: getValue() { let headers = new Headers({ 'Content-Type': 'text/plain' }); let options = new RequestOptions({ headers: headers });

我刚开始使用Angular 2应用程序,它可以进行一些http调用,这给我带来了一些可观察性。我仍然很难学会如何处理它们,对于初学者来说,文档有点缺乏。我将举一个简短的例子来说明我遇到的困难:

getValue() {        
        let headers = new Headers({ 'Content-Type': 'text/plain' });
        let options = new RequestOptions({ headers: headers });
        return this.http.get('http://url/boolean.json', options)
}
这是一个返回布尔值的get调用。现在,如果我想在函数中使用这个值,我本能地希望我可以像这样分配一个变量:

getValue() {        
        let headers = new Headers({ 'Content-Type': 'text/plain' });
        let options = new RequestOptions({ headers: headers });
        return this.http.get('http://url/boolean.json', options)
}
let varName = this.getValue()
显然这是不可能的,我读到为了从一个可观察的对象获得输出,你需要订阅它。是否有可能让我的函数getValue()返回布尔值而不是可观察值?然而,在这种情况下,由于我只需要布尔值,我不确定异步编程是否有意义?这并不是说这需要很长时间。在Angular 2中是否也有办法摆脱这种异步行为(对于像这样的简单函数?)

您可以使用Angular2的
async
管道“模拟”伪同步模式:

getValue() {        
        let headers = new Headers({ 'Content-Type': 'text/plain' });
        let options = new RequestOptions({ headers: headers });
        return this.http.get('http://url/boolean.json', options)
}
<div>{{value | async}}</div>
本Rx教程可以帮助您:

getValue() {        
        let headers = new Headers({ 'Content-Type': 'text/plain' });
        let options = new RequestOptions({ headers: headers });
        return this.http.get('http://url/boolean.json', options)
}
编辑

getValue() {        
        let headers = new Headers({ 'Content-Type': 'text/plain' });
        let options = new RequestOptions({ headers: headers });
        return this.http.get('http://url/boolean.json', options)
}
以下是利用运营商的方法:

getValue() {        
        let headers = new Headers({ 'Content-Type': 'text/plain' });
        let options = new RequestOptions({ headers: headers });
        return this.http.get('http://url/boolean.json', options)
}
this.getCurrentUser().flatMap((user) => {
  // return another observable
  return this.getData(user);
}).subscribe((data) => {
  // data is the result of the second request
}, (err) => {
  // no current user, ...
});

这仅适用于模板中的。但是如果我在后端需要这个值呢?例如,检查某人是否经过身份验证?事实上,您可以链接可观察对象并利用操作符来执行此操作。我用一个样本更新了我的答案。