Javascript-如何让用户等待结果

Javascript-如何让用户等待结果,javascript,jquery,Javascript,Jquery,问题末尾的解决方案 我想展示一个确认模式,询问用户是否真的想做某件事,并根据结果继续执行代码 我正在阅读此文档中的“确认、警报和错误消息”部分来执行以下操作: 您可以找到的.js和.css文件,如果您想测试 但是,在代码的这一部分中,我必须在显示确认模式之前检查变量是否为TRUE: if (verifyPermission === true){ FLUIGC.message.confirm({ message: "Would you like to

问题末尾的解决方案

我想展示一个确认模式,询问用户是否真的想做某件事,并根据结果继续执行代码

我正在阅读此文档中的“确认、警报和错误消息”部分来执行以下操作:

您可以找到的.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
是真的,我希望它会被要求确认。如果用户回答“否”,则代码必须停止运行

但是,正在发生的是,它正在显示确认问题,但其余代码正在执行,而没有等待确认

我不能把剩下的代码放在
函数(result,el,ev)
中,因为它有很多代码,我认为这会有代码复制。我不知道把剩下的代码放在函数中是否是一个好的做法

拜托,你能告诉我有没有正确的方法吗

解决方案-使用JAVASCRIPT异步函数

我在检查verifyPermission的函数前面放了“async”一词。 我留下了这样的代码:

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);
            });
        }); 
    }

将代码放入回调函数中

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
               }
            }
        }
    });
}

async
放在函数前面,然后做一个承诺链之类的东西。这确保代码按顺序运行

资料来源:


编辑:实际上我对这个不太熟悉,因此最好阅读源代码并仔细查看。

函数的可能副本是回调。。。因此,它应该处理这个案件,并属于那里。您可以通过进一步重构函数EAH来避免复制,将其余代码放在回调中,这就是它的用途。如果您担心重复代码,请将其余代码放在一个单独的函数中,并从回调内部调用该函数。这并不是对这个问题的真正回答,而“确保代码按顺序运行”基本上与
async
的作用相反。(最好不要发布你不熟悉的东西的答案…@DanielBeck Google异步定义:
(指两个或多个对象或事件)不存在或不同时发生。
是!!!!这就是我真正想要的!我在这里实现了它,它以我想帮助的方式工作:)谢谢!有了这个,我现在可以解决很多这种情况