我有一个utils类,其中包含showMsg函数以使用ui / dialogs
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()
中发生之前执行答案 0 :(得分:0)
它肯定不会等待,因为这是一个承诺。您必须使用async/await
helpers或等待showMsg
完成,例如您的组件中的showMsg().then((result)=> { //anything you want to do after dialog is closed })
。