Nativescript angular 使用对话框确认

Nativescript angular using dialog confirm

我有一个实用程序 class,其中包含使用 ui/dialogs

的 showMsg 函数
showMsg(titleTxt: string, msg: string, btnTxt: string, type: string){
 switch(type){
   case 'confirm':
    dialogs.confirm({
          title: titleTxt,
          message: msg,
          okButtonText: btnTxt,
          cancelButtonText: 'No'
      }).then((result) => {
          console.log(titleTxt + " Dialog closed!" + result);
          return result;
    });
      break;
  default:
    dialogs.alert({
          title: titleTxt,
          message: msg,
          okButtonText: btnTxt
      }).then(() => {
          console.log(titleTxt + " Dialog closed!");
          return true;
    });
}

}

问题是当我从另一个组件为确认对话框调用此函数时,该组件在继续之前不等待对话框的结果。我希望它根据用户响应有条件地继续。

编辑:

新的 showMsg 函数

showMsg(titleTxt: string, msg: string, btnTxt: string, type: string){
   switch(type.toLowerCase()){
  case 'confirm':
    return dialogs.confirm({
          title: titleTxt,
          message: msg,
          okButtonText: btnTxt,
          cancelButtonText: 'No'
      }).then((result) => {
          console.log(titleTxt + " Dialog closed!" + result);
          return result;
    });
  default:
   return dialogs.alert({
          title: titleTxt,
          message: msg,
          okButtonText: btnTxt
      }).then(() => {
          console.log(titleTxt + " Dialog closed!");
          return true;
    });
  }
}

对 showMsg 函数的调用现在是这样的

        this.myutil.showMsg('Update Cleaning Status', 'Are you Sure?', 'Yes', 'Confirm').then((result)=> { 
            console.log('In then: ' + result);
            alert(result);
         });

不幸的是,我们无法在函数调用之后获得任何代码,因为它在 .then()

中发生的事情之前执行

誓约不等。您必须使用 async/await helpers 或等待 showMsg 完成,例如组件中的 showMsg().then((result)=> { //anything you want to do after dialog is closed })