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

在AngularJs中管理同步XHR/Ajax调用,angularjs,xmlhttprequest,Angularjs,Xmlhttprequest,我有一个内置于angularJS的产品,我已经创建了近300个控制器。所有控制器都有一个XHR调用(不是$http调用,它是基本的javascript XMLHttpRequest),用于检查会话数据(通过在控制器的开头调用服务)。在开始的时候,我犯了一个错误,以同步的方式创建了它(同步调用在服务中定义),现在它在mozilla firefox中被弃用,很快就会在chrome中被弃用。有没有其他方法可以在不将所有控制器更改为$watch的情况下进行同步XHR调用 var request = ne

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

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

谢谢你的帮助。

谢谢汤姆·詹金斯的友好回复, 我已经找到了解决办法

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

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

例如:

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


您希望调用同步有什么原因吗?不推荐使用它们的原因是它们会阻塞UI,这会造成糟糕的用户体验。我建议找出如何使它们异步(很简单,但是一个单独的问题)。首先感谢您的关注,实际上控制器中的所有代码只有在从API到达会话数据后才能运行,所以我必须让控制器等待,直到它回到$rootScope中