如何等待返回值并在Angular2中订阅它?

如何等待返回值并在Angular2中订阅它?,angular,ionic2,observable,subscribe,Angular,Ionic2,Observable,Subscribe,我在爱奥尼亚开发应用程序时遇到了一个问题。我正在使用数据库提供程序对数据库执行查询,这很好,但可能被称为异步查询,因为我没有定义 经过一些检查和其他逻辑后,我将从数据库返回值: this.databaseProvider.getValueFor(saved.id) .then(data => { return data; }); 有没有办法将数据返回到Observable并订阅它?我对Angular2很陌生,不知道所有的概念。你可以使用[**可观测。

我在爱奥尼亚开发应用程序时遇到了一个问题。我正在使用数据库提供程序对数据库执行查询,这很好,但可能被称为异步查询,因为我没有定义

经过一些检查和其他逻辑后,我将从数据库返回值:

this.databaseProvider.getValueFor(saved.id)
    .then(data => {
           return data;
    });

有没有办法将数据返回到Observable并订阅它?我对Angular2很陌生,不知道所有的概念。

你可以使用[**
可观测。fromPromise**][1]
方法将promise转换为Observable,然后订阅Observable从中检索数据

SomeMethod(){
   return Observable.fromPromise(this.databaseProvider.getValueFor(saved.id))
}

//Usage
this.SomeMethod().subscribe(data => {
   console.log("data", data)
})
this.databaseProvider.getValueFor(saved.id)
  .subscribe(data => {
       console.log(data); //response
});

可观察对象是惰性的,因此您需要订阅它以从中获取数据

SomeMethod(){
   return Observable.fromPromise(this.databaseProvider.getValueFor(saved.id))
}

//Usage
this.SomeMethod().subscribe(data => {
   console.log("data", data)
})
this.databaseProvider.getValueFor(saved.id)
  .subscribe(data => {
       console.log(data); //response
});
getValueFor(id):可观察{
常量url=http://yourAPI/“+id;
返回此.http.get(url)
.管道(
map((res:any)=>res.json()),
catchError(e=>this.handleError(e))
); 

}

“Observable”不可分配给“PromiseLikehello”类型的参数,我正在使用angular auth客户端oidc this.oidcSecurityService.getUserData().subscribe();此方法由oidc库提供,用于如何等待此类订阅完成。我无法将其转换为promise,因为它位于Library中。如果我在服务层内调用HTTP请求,需要等待请求的响应,并在组件中对其进行处理,该怎么办?是的,您也可以这样做。您只需要返回HTTP调用的响应。看看下面的代码片段
getData(url):Observable{返回this.http.get(url).pipe(map((res:any)=>res.json()),catchError(e=>this.handleError(e));}
所以,我将像getData(url.subscribe()一样编写订阅,对吗?