如图 应该先打印dd 再打印ss 吧
但是 却是按着watch 中顺序来的 先ss 在dd,
你在watch中顺序换了就 先dd,在ss,跟先后赋值的顺序没关系,这是为啥
如图 应该先打印dd 再打印ss 吧
但是 却是按着watch 中顺序来的 先ss 在dd,
你在watch中顺序换了就 先dd,在ss,跟先后赋值的顺序没关系,这是为啥
这么理解啊,你更新数据之后,虚拟dom发现数据更新,便触发更新。当你的数据全部更新完成之后,watch开始工作,从第一条被监视的数据开始,如果更新就执行定义的内容,然后继续查询后面一条被监视的数据。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
vue的watcher一般是异步执行的,数据更新后往queue队列中不断追加watcher。讲道理queue的轮询应该是按顺序的(从前往后,或从后往前),但是为了保证父组件的watcher在子组件之前运行,所以根据id进行了一次排序,也就是根据watcher的注册顺序进行排序。
所以,你这里因为ss在dd前面注册,所以先运行了dd