等待不等待功能完成

时间:2019-10-08 04:57:19

标签: angular ionic-framework promise async-await

因此,我正在做一些工作,用户可以在其中具有“ 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();
  }

0 个答案:

没有答案