开发时总会遇到一些自己一时解决不了的问题,大大降低了工作效率,博主在这列出一些日常踩到过的"坑",希望能帮到网友们.
"诡异"的问题1:Vue在发送ajax请求之后返回的数据有的为'undefined',具体情况看下图:
为什么ajax请求获取之后,我封装进Vue对象里,再打印这个对象,怎么可能获取一个undefined的cardNo呢?难道程序不是顺序执行的吗?
然而罪魁祸首在这里:
程序当然是顺序执行的,发出ajax请求之后程序就会继续执行,至于何时会进行回调,不知道,我们并不能决定回调函数的执行时间,但总有方法可以达到我们的业务目的,js的工作机制是当线程空闲的情况下才会执行异步代码的回调函数,具体callback的知识可以参考这篇博文:https://blog.csdn.net/jnshu_it/article/details/80030269,以及:https://blog.csdn.net/u014787301/article/details/51984998
出现上图的情况,说明封装Vue对象的操作还未完成,页面主线程已经执行打印Vue对象的操作了,然而此时需要的数据还在响应里,Vue对象的cardNo属性还没赋值,所以是'undefined'
解决办法:
将ajax请求的async属性设置为true,另ajax发送请求并等待相应的时间内锁住浏览器,就可以保证封装操作在打印对象之前执行了;
获得经验:
以后转储工作尽量放在回调函数之外,可以异步的操作放回调函数中就好。