local无法复现的,线上稳定复现的bug

发布时间 2023-07-17 11:25:59作者: 我欲皆真

场景:

angular,input回车之后触发form的ngSubmit,然后再是input本身的回车事件。

相同功能的还有一个是search按钮,不处罚ngSubmit事件。

线上:

登陆后的第一次操作只要是回车就会用问题,无法去到目标路由,后续操作没有问题。但是只要第一次操作不是回车,所有操作都没有问题。

local:

无法复现该问题。(试了40,50次之后,偶然复现了一次之后就稳定复现了,但这也是2天后的事情)

解决方法:从现象倒退,排除一切不可能的之后,剩下那个不可能的就是可能。

柯南说的?

答案:

回车会同时触发ngSubmit和input的按键事件,触发同一个函数,但是函数的第二个参数控制路由逻辑,两个函数的第二个参数相反。

理论上不管是谁先执行(一定是ngSubmit先执行),最后的路由结果都是一样的。

但是实际上,似乎极短时间的多次路由导向会出问题,以为第二个路由获取的参数会是第一个路由的结果,但实际上不是,会是第0次的路由结果。

那也就是说路由的先后执行顺序其实会导致不同的结果。类似于以为是顺序执行,结果却是并发执行。

但是关于为什么local最开始无法复现以及后续也不是稳定复现,以及只要第一次操作会出问题的原因,还不是特别清晰。