2014-06-27 65 views
3

我最近发布this question,并找出了直接解决方案(即,当路由发生变化时,我可以取消承诺/请求)。然而,我遇到另一个相关的问题,我认为它属于一个单独的问题,所以在这里:Angularjs中止承诺仍延迟其他承诺

当路由变化很好时,我可以中止我的承诺(正如您从问题I链接)。但是,出于某种奇怪的原因,其他路由上的任何其他请求在解析时都会延迟。见下面我的开发工具截图。

以下是这种情况:我加载路由A,呼叫/api/categories,你可以看到它需要30ms,这是正常的。然后我导航到路线B,然后在完成载入之前,我返回到路线A.当我返回时,对/api/categorySites/1的呼叫被取消,并且您可以看到灰色条结束时的情况。这是通过放弃承诺来完成的。但是,再次回到路由A,对/api/categories的呼叫不会解决,直到该灰点再次出现在被取消的请求上。第二个电话/api/categories不应该采取2.23s,它应该更接近30ms。

Dev tools

这是怎么回事吗?我认为第二轮A申请会和以前一样快。我需要更快地工作。我的代码在this question。如果您认为我应该再次将其纳入此处,请告诉我。我很难想象这不是一个普遍的问题太...

+0

嗯......你有没有想过这个?我遇到了同样的情况。 – Brian

+0

我找不到方法。你会认为这是一个更常见的问题。我所做的是通过使用缓存来提高后端处理速度,以避免脚本花费太长时间,因此对于前端用户来说不太明显。当然这并不理想,并没有真正解决问题。如果你找到答案,请告诉我! – Joao

+3

当你试图提出请求#6改变路线不取消请求,但取消承诺。在更改路由之后,请求#7调用服务器,并且我认为它只能同时处理一个请求,因此您可以看到该差异。后端有什么? – kuzzmi

回答

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(Angularjs默认)由$stateProvider(UI路由器)增强加快中止路线。

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