大家好,我是编程小6,很高兴遇见你,有问题可以及时留言哦。
我是一名后端程序员,主要经验是WinForm和WebApi,最近开始在学.NET MAUI。由于项目上需要,再加上自己也想多掌握些技能,就把前后端的工作都一起揽了过来。
今天遇到了一个小问题,在WinForm中可以秒实现的功能,在Vue里搞了2小时(大佬们不要嘲笑我[流泪]),特此来记录一下。
先来上一段样例代码,如下:
这段样例代码的主要功能就是调用两个校验方法,校验通过后执行api与数据库交互。
在afterPrintCancelCheck这个方法中,根据条件(winthinHours<=0)判断可能会弹出一个询问对话框,由用户来决定是否继续往下执行,样例代码如下:
问题就出在这个Modal.confirm()确认对话框上,这里它并不能阻塞代码,弹框之后还没有点击选择,后面的代码就已经正常执行完了[流泪]
后来经过调查,这里需要用到Promise来实现异步等待,才可以实现阻塞并正确获取到用户点击的结果值。改造的样例代码如下:
主要是将弹出询问对话框的代码抽取为一个共通async方法,然后在调用的时候用await等待,就可以正常阻塞并获取用户点击的结果了。
这样不仅可以解耦代码,提高代码的复用性,还使得代码看上去很优雅,方便日后维护[灵光一闪]
哎,太难了,如果是在WinForm里,只需下面一行代码就可以搞定了[大笑]