在AngularJs中管理同步XHR / Ajax调用

时间:2015-07-09 11:55:48

标签: angularjs xmlhttprequest

我有一个内置angularJS的产品,我创造了近300个控制器。所有控制器都有一个XHR调用(不是$ http调用,它是基本的javascript XMLHttpRequest),用于检查会话数据(通过调用控制器开头的服务)。在开始时我通过以同步方式创建它(同步调用在服务中定义)而犯了一个错误,现在它在mozilla firefox中被弃用,并且很快就会在chrome中弃用。是否有另一种方法可以在不将所有控制器更改为$ watch的情况下进行同步XHR调用?

var request = new XMLHttpRequest();
request.open('POST', 'path/to/my/APIservice', false);

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

感谢@ strong>汤姆詹金斯的回复, 我找到了解决方案。

我已创建一个新状态并从所有其他状态路由到该状态,然后将从新创建的状态/控制器异步加载XHR调用,并在获得响应之后,我将状态重定向到上一个状态加载的数据。

我不知道这是否是实际解决方案,但它节省了我编辑所有300 js文件的时间。 :)

  

例如:

     

我正在刷新主页状态,但它需要一些会话数据   从数据库加载以显示页面。然后我将状态重定向到    checkSession 状态,在该控制器中我调用该服务,并在该调用的承诺中将数据存储到$ rootScope然后   使用$ state.go()我将状态重定向到 home