因此,我正在做一些工作,用户可以在其中具有“ x”个可用空间的健身课上进行题词(例如15)。题词完成后,可用空间减少了1。我面临的问题是,题词之后,可用空间没有立即减少。
我的代码是这样的:
说明服务
inscripcionAClase(clase, username) {
var nuevaInscripcion = {
id: clase._id,
username: username
};
this.postInscripcion(nuevaInscripcion)
.subscribe((data: any) => {
alert('Inscripto con exito!');
}, error => {
console.log(error);
});
}
获取课程服务
async obtenerListadoClases(categoria) {
var clasesDB;
await this.getClases(categoria).toPromise().then((resp: any) => {
clasesDB = resp.clasesDB;
})
return clasesDB;
}
使用获取课程服务
async obtenerClases(categoria) {
this.listadoClases = await this.claseServicio.obtenerListadoClases(categoria);
console.log(this.listadoClases, 'obtengo listado');
}
ALERT CONTROLLER
async inscripcionAlert(clase) {
const alert = await this.alertController.create({
header: 'Atención',
message: 'Confirme para inscribirse a la clase',
buttons: [
{
text: 'Aceptar',
handler: async () => {
await this.inscripcionServicio.inscripcionAClase(clase, this.username); // **Works fine**
await this.obtenerClases(this.categoria) // **Classes are not refreshing after the inscription is made**
}
}, {
text: 'Cancelar'
}
]
});
await alert.present();
}
我注意到的一件事是,如果我这样编写警报控制器类(在get类中使用setTimeOut),则它可以完美运行。因此,我认为Promise存在延迟问题,但是我之前使用过await关键字,但是它没有执行“ await”功能。
async inscripcionAlert(clase) {
const alert = await this.alertController.create({
header: 'Atención',
message: 'Confirme para inscribirse a la clase',
buttons: [
{
text: 'Aceptar',
handler: async () => {
await this.inscripcionServicio.inscripcionAClase(clase, this.username);
setTimeout(() => {
this.obtenerListadoClases(this.categoria)
}, 2500);
}
}, {
text: 'Cancelar'
}
]
});
await alert.present();
}