将 promise 的返回值分配给始终未定义的 ionic2 变量



我是离子世界的新手,当我在构造函数中调用一个函数时,我遇到了一些麻烦。 我正在制作一个应用程序,为大学房间腾出空间。我已经设置了我的 Web 服务,并且正在进行 HTTP 调用以取回答案,但在某些情况下,我需要保存这些返回值,这样我就不必每次都重做 HTTP 调用。但是每次我尝试在 promisse 之外访问这些变量的值时,它们都会返回未定义。

这就是我正在做的事情,我的问题是:如何在变量中分配承诺的返回值而不会丢失它的上下文。

export class MainPage{
rooms: Array<Sala>; //array of rooms
constructor(public navCtrl: NavController, public navParams: NavParams, public connection: ConnectionService) {
this.callLoadRoom();
}
callLoadRoom() {
var that = this;
this.connection.loadRoom()
.then( (data: Array<Sala>) => {
that.rooms = data;
}, (error) => {
console.log("Load Rooms Error!", error);
});
}
printRooms(){
console.log(this.rooms)
}
} 

连接类是对 Web 服务执行 HTTP 调用的提供程序。这是我的做法:

loadRoom() {
return new Promise((resolve, reject) => {
this.http.get(this.baseUri+'sala/carregarSala')
.map(res => res.json())
.subscribe(data => {
resolve(data);
},
error => {
reject(error);
});
});
}

谢谢大家!

不要使用var that = this

没有必要,直接使用this

可以像以下方式清理loadRoom()方法:

loadRoom() {
return this.http.get(this.baseUri+'sala/carregarSala')
.map(res => res.json())
.toPromise()
.catch(err => {
// handle error here
}
}

有关此问题中.toPromise()

的更多信息您可以在此处观看实时 plunker 演示

相关内容

  • 没有找到相关文章

最新更新