为什么调用类的async异步方法后,后续逻辑首次点击提交不生效?
问题原因
点击事件回调中调用异步方法validate()时未添加await关键字,校验逻辑还在等待Python侧eel接口返回的过程中,start()就已经执行,此时读取的validation_dict还是未更新的初始值,所以第一次点击不会得到预期结果。第二次点击时,上一次触发的校验已经执行完成,validation_dict已经更新,所以看起来逻辑正常。
修复方案
修改点击事件的回调逻辑,添加await等待所有校验步骤全部完成后再执行结果处理:
jQuery('#btn_start').on('click',async function(){ await validate(); start(); });
注意事项
请确认Validation类中的setter_status方法已经正确将Python侧返回的带[ERROR]/[SUCCESS]前缀的字符串,解析为start()判断逻辑中用到的error/success枚举值存入validation_dict,否则状态判断逻辑也会失效。
内容的提问来源于stack exchange,提问作者Sani4
相关产品推荐
相关产品推荐

