问题末尾的解决方案
我想展示一个确认模式,询问用户是否真的想做某事,并根据结果将继续执行代码。
我正在阅读此文档的“确认,警报和错误消息”部分以执行此操作:Link to the DOC
如果要测试,可以找到here和here的.js和.css文件
但是,在我的代码的这一部分中,我必须在显示确认模式之前检查变量是否为TRUE:
if (verifyPermission === true){
FLUIGC.message.confirm({
message: "Would you like to allow this?",
title: 'Without permission',
labelYes: 'Yes',
labelNo: 'No'
}, function (result, el, ev) {
if (!result) {
return; //Not allowed, so here must cancel the execution
}
}
});
//I want to the application stops here until the user confirm
}
//The rest of code is here below
我想如果verifyPermission
是真实的,将要求您进行确认。如果用户回答“否”,则该代码必须停止运行。
但是,正在发生的事情是它显示的确认问题,但是其余代码正在执行而无需等待确认。
我无法将其余代码放在function(result, el, ev)
内,因为它包含很多代码,我认为它将具有代码复制功能。而且我不知道将其余代码放入函数中是否会是一个好习惯。
请,您能告诉我是否有正确的方法吗?
解决方案-使用JAVASCRIPT异步功能
我在检查verifyPermission的函数前加上了“异步”一词。 我留下了这样的代码:
async function myFunc() {
if (verifyPermission === true){
var result = await confirmPermission();
if(!result){
return;
}
}
// rest of code here
}
我创建了这个函数:
function confirmPermission(){
return new Promise(resolve => {
FLUIGC.message.confirm({
message: "Would you like to allow this?",
title: 'Without Permission',
labelYes: 'Yes',
labelNo: 'No'
}, function (result, el, ev) {
resolve(result);
});
});
}
答案 0 :(得分:0)
将代码放入回调中。
if (verifyPermission === true){
FLUIGC.message.confirm({
message: "Would you like to allow this?",
title: 'Without permission',
labelYes: 'Yes',
labelNo: 'No'
}, function (result, el, ev) {
if (!result) {
return; //Not allowed, so here must cancel the execution
else{
//your code here
}
}
}
});
}
答案 1 :(得分:0)
将async
放在函数之前,并做一个Promise链之类的东西。这样可以确保代码按顺序运行。
来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
编辑:我实际上对此不太熟悉,因此最好阅读源代码并仔细阅读。