在角度2中呼叫异步等待

时间:2018-12-24 14:30:51

标签: javascript angular typescript

在我的angular 2应用程序中,我得到了方法:

myMethod(component: any): void {
  let a = console.log('start');
  if (this._something) {
    // Here i got custom modal window
    this._service.callModalWindow('message').subscribe(result => {
      if (result === 'Confirm') {
        let b = console.log('confirm);
      }
    }
  }
  let c = console.log('finish');
}

问题是:该方法调用console.log的方式不是我想要的,我想先获得console.log('first'),然后在得到模式确认后获得console.log('confirm'),然后获得最终console.log('finish');

现在我遇到这种情况,当我确认模态时,方法会先调用变量a,然后依次调用cb

有人知道我如何解决这种情况吗?

1 个答案:

答案 0 :(得分:1)

不是使用异步等待的最合适方法。但是如果你必须。使用toPromise将可观察对象转换为Promise,因为异步等待需要Promise在幕后解决

async  myMethod(component: any): void {
  let a = console.log('start');
  if (this._something) {
  // Here i got custom modal window
  let result = await this._service.callModalWindow('message').toPromise();
  if (result === 'Confirm') {
    let b = console.log('confirm);
  }
  let c = console.log('finish');
}