使用$ httpBackend进行同步通话?

时间:2014-11-07 15:40:27

标签: angularjs http asynchronous

我们正在使用第三部分i18n模块在我的应用程序中进行翻译。具体来说是https://github.com/doshprompt/angular-localization

问题

我们遇到的问题是在可能加载之前需要locale服务。如果在状态中需要它,我们可以在状态解析时解析locale,但如果在任何状态被请求之前必须运行脚本,则存在时序冲突。

在此示例中,我尝试在加载locale之前加载需要locale的服务,或者可能有足够的时间加载。

实施例

angular.module('config', []).service('myService', ['ngLocalization', function(locale) {
    return {
        foo: locale.getString('bar')
    }
}]);

angular.module('app', ['config']).run(['myService', function(myService) {
    /// ... do stuff ...
}]);

我反混乱

这看似简单 - 只需将locale.ready('common').then(function() {});添加到服务即可。我们可以做的事情...... 无处不在(有很多地方)。但是我们并不想把这个令人困惑的混乱添加到我们不稳定的代码中。而且我们不想养成每个服务,控制器,指令等的习惯,检查所有可能的依赖关系及其资源是否独立加载。

$ httpBackend解决方案?

$ httpBackend用于单元测试但可以使用 - 或者是否有其他服务可用于设置对http请求的响应?如果已经有响应,那么它是同步的吗?然后,当配置模块加载时,它会对所有需要的lang文件发出ready请求,这些文件会立即应用,并且时序冲突将会消失。

思想?

0 个答案:

没有答案