我最近发布了this question并找出了直接解决方案(就是说,当路线发生变化时,我能够取消承诺/请求)。但是,我遇到另一个相关的问题,我认为它属于一个单独的问题,所以在这里:
当路线改变时,我能够放弃我的承诺(正如你从我链接的问题中看到的那样)。但是,由于某些奇怪的原因,其他路由上的任何其他请求在解析时都会延迟。请参阅下面的开发工具截图。
这是一个场景:我加载路由A,调用/api/categories
,你可以看到它需要30ms,这是正常的。然后我导航到路线B,然后在它完成加载之前我返回到路线A.当我返回时,对/api/categorySites/1
的呼叫被取消,你可以看到当灰色条结束时会发生什么。这是通过中止承诺来完成的。但是,再次回到路线A,对/api/categories
的呼叫无法解决,直到该灰色点再次出现在已取消的请求上。对/api/categories
的第二次调用不应该是2.23秒,应该接近30ms。
这里发生了什么?我认为第二个路线A请求会像以前一样快。我需要让它更快地工作。我的代码在this question。如果您认为我应该在此处再次提供,请告诉我。我很难想象这也不是一个普遍的问题......
答案 0 :(得分:1)
这是一篇较老的帖子,但我确实对此进行了调查,这听起来像是我最近在Emberjs文档中读到的渴望和懒惰的异步转换。在您的路线(以及随后的中止)履行承诺(完成),移动到您的重新路线请求。
我相信这可以通过状态控制器来改善。
There is an Angularjs ui-router state controller that might be of use.
Angularjs routing documentation (for posterity).
因此,$routeProvider
(ui-router)增强$stateProvider
(Angularjs默认值)以加快中止路由。
希望这有用(大约312天后)。