正常情况下watch会在created执行完之后执行,实际情况也是这样。但在实际项目当中却遇到了这样一个特殊情况。在created中会有一个ajax请求,会得到一个变量this.chnage作为初始值。watch里面也会检测this.change值的变化。我的本来意图是,先执行created得到this.chnage作为初始值,然后watch再检测这个值的变化。
但是,实际运行情况是这样的
1,先执行created内的函数,发送ajax请求
2,在等待ajax返回结果的时候,watch中的this.change发生了变化,这时就先执行了watch内的函数得到this.change
3,然后ajax返回结果之后,然后再得到返回的this.change。
这时得到this.change的顺序就发生了变化。此时就不是先得到ajax返回的this.change.再检测watch的this.change值的变化。而是反过来了!
其实这只是一个关于js执行顺序的问题,但是在实际项目中容易被忽略。有时候切记不要被理所当然的执行顺序而蒙蔽了双眼!
最新评论