Angularjs中止承诺仍然推迟其他承诺

时间:2014-06-27 17:11:18

标签: angularjs

我最近发布了this question并找出了直接解决方案(就是说,当路线发生变化时,我能够取消承诺/请求)。但是,我遇到另一个相关的问题,我认为它属于一个单独的问题,所以在这里:

当路线改变时,我能够放弃我的承诺(正如你从我链接的问题中看到的那样)。但是,由于某些奇怪的原因,其他路由上的任何其他请求在解析时都会延迟。请参阅下面的开发工具截图。

这是一个场景:我加载路由A,调用/api/categories,你可以看到它需要30ms,这是正常的。然后我导航到路线B,然后在它完成加载之前我返回到路线A.当我返回时,对/api/categorySites/1的呼叫被取消,你可以看到当灰色条结束时会发生什么。这是通过中止承诺来完成的。但是,再次回到路线A,对/api/categories的呼叫无法解决,直到该灰色点再次出现在已取消的请求上。对/api/categories的第二次调用不应该是2.23秒,应该接近30ms。

Dev tools

这里发生了什么?我认为第二个路线A请求会像以前一样快。我需要让它更快地工作。我的代码在this question。如果您认为我应该在此处再次提供,请告诉我。我很难想象这也不是一个普遍的问题......

1 个答案:

答案 0 :(得分:1)

这是一篇较老的帖子,但我确实对此进行了调查,这听起来像是我最近在Emberjs文档中读到的渴望和懒惰的异步转换。在您的路线(以及随后的中止)履行承诺(完成),移动到您的重新路线请求。

我相信这可以通过状态控制器来改善。

There is an Angularjs ui-router state controller that might be of use.

Here are example examples.

Angularjs routing documentation (for posterity).

因此,$routeProvider(ui-router)增强$stateProvider(Angularjs默认值)以加快中止路由。

希望这有用(大约312天后)。