mui的plusReady无限加载问题与解决历程
发现问题与解决历程
1.昨天团队使用mui开发前端时,莫名其妙地发现账号登录跳转后,index页面的起始子页面chatRecord的js里有一个方法在无限循环调用。
2.首先我怀疑的是定时发送心跳之类的问题引起的函数定时调用一次,但是经过注释后,发现问题仍然存在。
3.于是,在经过一番定位后,发现居然是页面加载时才会启动的plusReady在无限调用,因此引起了plusReady中的方法无限启用。
4.这时候,我猜测是子页面在被无限加载,于是我找到index对应的js页面,去查有没有递归或者无限循环创建子页面。
5.令人震惊的是,经过这一查,我发现index页面的plusReady也在被无限循环加载。
6.于是,我又找到起点——login登录页面的js文件,因为这里面是肯定有跳转index页面,但是经过检查,这里的代码很是简单,并没有查出错误。
7.我又去问前端开发的队友,看看她们有没有在哪也进行了index页面的创建与跳转,得到的结果与我进行一番查看后的结果一样——没有。
8.就这样,陷入了僵局。
9.我和团队中的两个队友查了一下午+一晚上,还是没看出哪里有问题。
10.直到今天早上,队友终于有了重大发现:在index的另一个子页面personalCenter页面的js中,引用了index的js文件。
(他将index的js文件注释掉后,发现这个被注释掉的js文件居然还在生效,因此定位到了这里)
11.因此,去掉这个调用,就解决了问题。
回顾:
所以,因为index页面加载时,使用了webview+tabbar,于是js里有先加载所有子页面然后隐藏的操作,再加上前端队友不小心在个人中心这个子页面里进行了index才会用到的js文件的引用加载,于是引起了递归式无限调用,形成了我们遇到的问题。
总结:
以后还得多审查文件引用的合理性啊!