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

问题描述 投票:0回答:2

我在Ionic中开发app时遇到了问题。我正在使用数据库提供程序对数据库执行查询,它很好,但它可能被称为异步,因为我得到了未定义。

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

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

有没有办法将数据返回到Observable并订阅它?我对Angular2很新,并不了解所有概念。

angular ionic2 observable subscribe
2个回答
1
投票

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

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

//Usage
this.SomeMethod().subscribe(data => {
   console.log("data", data)
})

0
投票

Observable是懒惰的,所以你需要订阅它以从中获取数据。

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

getValueFor(id): Observable<any> { const url = 'http://yourAPI/'+id; return this.http.get<any>(url) .pipe( map((res: any) => res.json()), catchError(e => this.handleError(e)) ); }

© www.soinside.com 2019 - 2024. All rights reserved.