标题还没想好

今天遇到一个奇怪的问题,不知道为什么。
标题还没想好

标题还没想好
图二中发送了四个http请求,带有参数siteId。
改变参数的方法routerChange如果写在图一没有注释的那处,图二中的四个http请求就会发送一次,这个正确的结果。但是如果写在图一注释的那里,图二中的四个http请求就会发送两次,第一次是没有拿到siteId的,第二次是拿到了siteId的。
开始猜想可能是promise成功拿到数据时图二的controller执行一次,参数改变后图二的controller刷新所以http请求又发送了一次
后来debug(断点在图二的if上面)发现,第一次过来的时候,stateParams.siteIdundefinedsiteIdstateParams.siteId有值,并且浏览器地址栏参数更新了。
然后在routerChange上面也加一个断点的时候发现,是先走的改变参数的方法,后面才走的图二的controller,并且走了两次,第一次$stateParams.siteId是undefined,第二次才有值。但是url地址栏在routerChange走完后就更新了参数了。

这我就不懂了,为啥会这样呢?