万里无云的一天,打开电脑,泡上一杯红茶,在秋天的抽风的天气中,舒缓一下心情。
突然收到前方,测试同志通知,验证码点击没有反应。
虎躯一震,开始搜寻记忆(找代码记录),查看是否是写丢了东西。
仔细看了看,貌似上午加了多次点击的过滤 throttle 节流方法
莫非是它除了啥问题吗?
然而此时 Androidstudio 居然罢工了,它连不上WiFi, 我无法针对真机获取请求,最后在我强硬的措施下(重启电脑),它选择了屈服,我连上了缥缈的WiFi,喜不自胜。(后来乱七八糟的查阅,我感觉应该是 服务接口被占用了,导致不能启用,重启后,所有的服务都被断了,所以能快速的链接WiFi,但是我这个前端bug小搬砖工,还没有研究到,暂且不表了)
连上WiFi,兴致冲冲的准备运行调试,突然发现 logcata 没有任何请求运行,奇怪啊,这个软件为啥这么对我😿,请求大佬支援。需要将配置的一个文件的 debug = true,syncDebug = true,吭哧吭哧的改,改完在重新运行,确实好了。(😊)
继续寻找出现的问题,哈哈哈,真棒,还是没有请求,果断放弃了真机,放弃了studio,这座高深的大佛,转向了 hBuilderX ,用ipad模拟调试。
终于终于终于,让我找到了,运行出来报错了,说 手机号值没有获取到,那咋个可能呢,一直都是好的呢。去源码看。都有定义,那为啥取不到呢,去看调用,明白了,因为点击事件时,先用了 throttle 公共方法过滤,在走点击后的逻辑,导致了 this 指向发生了改变,然后找到开篇定义的 page 变量,在 onload 中将this 赋值给了定义的page,然后果断的换掉了页面中的this 调用,改为了page,拿起ipad 重新运行测试。
可以了!!!!!
也是不容易啊,马虎大意导致出现很多基本的错误。所以代码是一个积累的过程,有了经验,才能得到千锤百炼的优质代码。
so please remeber,页面中点击事件有请求接口操作,或者需要较长时间的运行的时候,记得先给当前事件进行重复点击过滤操作,在使用重复点击过滤方法后,会改变this 指向,所以需要主要指向问题哦!
点击事件的问题,可能有多重原因得到不同的结果,小小总结,不成敬意!
成因:
- 网络原因
- 手速过快
- 点击事件触发错误
- 事件穿透
- 方法嵌套使用 this 指向改变 接口报错
解决:
- 首先解决穿透问题,一般的框架都会有防止事件穿透的参数,可以参考api进行设置。
- 书写一个公共方法,用在需要请求数据,或者事件加载的方法进行一层过滤
- 参照 throttle 节流防抖函数
- 对于框架来说,页面加载时,或者接口调用时,先将this赋值给一个参数,放置this 指向改变
未完 时不时补充!
throttle 参考:http://muyiy.cn/blog/7/7.1.html#%E5%BC%95%E8%A8%80
写在最后,点醒自己!!!
论规范的代码书写,是多么重要的一件事情。
如果你是一个自我研究的人呢,对项目、插件、框架等运用的完美程度,很大程度在于自己 bug 的产出量,因为你遇到了bug,解决了bug,也就为下一次避免 bug 打下了夯实的基础,但是回归本论,最基础的还是要认真的对待代码,仔细的阅读api,理解原理机制,规范的运用,这样不光可以减少 bug , 还可以增加开发效率。
开发中应该如何避免bug呢,这个是无法预料的,只能在自己的能力范围之内,规范的使用api。
没有一滴汗水是无效的。